Pull to refresh
0
0
Сергей @b8c6

User

Send message

Простое сравнение изображений с помощью php

Reading time3 min
Views27K
Алгоритм возможно не новый, и не является идеалом, но, на удивление, работает. Никаких графов и корелляции.

Для начала, стоит отметить, что сравнение очень приблизительно (по крайней мере, на данном этапе), временами две совершенно разные фотографии оказываются похожими процентов на 60%, так же не учитываются жесткие модификации (повороты, инверсия, обрезка) – для этого нужно доводить и доводить. Лично для меня самым главным оказались два параметра: скорость, независимость от разрешения изображения и возможность сравнивать «изображения» прямо в базе данных.
Читать дальше →
Total votes 161: ↑153 and ↓8+145
Comments64

Как решить некоторые проблемы в Linux

Reading time4 min
Views23K
image

Вступление


Как известно, типичные РС-компьютеры собирают из весьма разношерстных компонентов — процессор от одного производителя, видеокарта от другого, звуковая карта от третьего. Темы про принтеры/сканеры/Wi-Fi адаптеры/TV-тюнеры просто кишат повсюду на форумах. Не добавляют оптимизма и вездесущие китайские производители, не особо-то стремящиеся к стандартизации. Перед операционной системой стоит непростая задача заставить работать согласованно все эти устройства.
Предлагаю вашему вниманию небольшой гайд по устранению типичных проблем в Linux.

По мотивам этого.
Читать дальше →
Total votes 133: ↑81 and ↓52+29
Comments218

SoapClient: параллельные асинхронные запросы, реконнект, обработка тайм-аутов

Reading time3 min
Views8K
Dklab_SoapClient — это расширенная версия стандартного PHP-класса SoapClient, предназначенная для параллельного (асинхронного) удаленного вызова процедур в высоконагруженных проектах.

При помощи этой библиотеки вы можете, например, строить страницу вашего сайта из блоков, как из конструктора. Каждый блок запрашивается через SOAP отдельно и независимо от других, при этом все запросы происходят параллельно. Если один из блогов не уложился в отведенное ему время (тайм-аут), то его можно не отображать на странице.

По сравнению со встроенным в PHP SoapClient, поддерживаются дополнительные возможности:
  • Одновременное, параллельное выполнение запросов к нескольким удаленным процедурам — ключевая особенность библиотеки. Если страница на вашем сайте собирается из 5 удаленных блоков, каждый из которых генерируется по 100ms, их можно запустить параллельно и получить всю страницу целиком не за 500ms, а за те же самые 100ms.
  • Реконнект при невозможности установления связи. К сожалению, мир несовершенен, и из-за случайной потери пакетов первая попытка соединения с SOAP-сервером может закончиться тайм-аутом. Это особенно часто происходит, когда проект располагается в нескольких датацентрах. Dklab_SoapClient позволяет задать тайм-аут на время открытия соединения (например, 1 секунду) и, в случае неудачи, повторить попытку указанное число раз. На практике это снижает вероятность итогового сбоя в тысячи раз, т.к. реконнект почти всегда помогает при утере пакета.
  • Поддержка тайм-аута на получение данных. Если страница собирается из удаленных блоков, то в случае «подвисания» одного из них «зависает» и вся страница. В то же время, отсутствие одного из блоков при наличии остальных — не такая большая беда. Вы можете указать, сколько времени Dklab_SoapClient должен ждать ответа от удаленной процедуры; если время превышено, возникает исключение PHP, которое вы можете обработать по своему усмотрению, не прерывая загрузку остальных блоков.
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments29

Жизнь во фрилансе глазами программиста

Reading time3 min
Views57K
Вот уже два с половиной месяца как я занимаюсь фрилансом, за это время накопился опыт, которым хочу поделиться с общественностью.

Вход


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

Трудности


Читать дальше →
Total votes 163: ↑138 and ↓25+113
Comments155

Масштабируемая картинка на фоне сайта

Reading time4 min
Views20K
Задача:
Дизайнер нарисовал макет страницы, на заднем фоне которой была картинка. Я сначала было решил, что это фон который увеличивается по ширине в зависимости о разрешения монитора.
Но не тут то было. Дизайнер настаивал на то, что это масштабируемая картинка, которая сужается / растягивается при изменение окна приложения и по ширине и по высоте.
Заранее предупредив заказчика – что картинка будет грузиться 1 и в максимальном разрешении – его определили как 1600, приступил к работе.
Смотрим что получилось ...
Total votes 69: ↑53 and ↓16+37
Comments50

Таблетки счастья

Reading time2 min
Views1.5K
Антивирус — это хорошая штука. Он лечит и убивает, «если неизлечим». Только вот есть такие твари, которые оставляют после себя немало следов и порой неприятных, например, удаляют, создают и изменяют ключи в реестре, создают странные папки и текстовые файлы, переименовывают системные библиотеки и прочее. Порой картина выглядит так, что после очищения компьютера от обитателей серпентария вредоносного ПО всё равно хочется «снести винду».

Недавно мой комп на работе поразил чудесный вирус под названием Brontok. Запущенный в срочном порядке CureIt сделал своё дело, но осталось много интересного. Довольно быстро я наткнулся на таблетку — утилиту, которая занимается филигранной чисткой компьютера после конкретного вируса с последующим выводом отчёта и рекомендациями.

Чуть позднее подобные «аптечные киоски» обнаружились в нескольких местах. В принципе все они должны выполнять одну и ту же работу, но кто лучше, кто хуже, я не проверял и не сравнивал, сам пользовался утилитой Sophos'a.

www.sophos.com/support/disinfection
www.kaspersky.ru/removaltools
www.bitdefender.com/site/Downloads/browseFreeRemovalTool
www.avg.com/virus-removal
www.avira.com/en/support/antivir_removal_tool.html
www.eset.com/download/free-virus-remover.php
www.symantec.com/norton/security_response/removaltools.jsp
support.microsoft.com/kb/890830 — не совсем таблетка, но при беглом ознакомлении меня заинтересовала, как администратора, советую присмотреться к ней повнимательней.

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

Самое главное — они высокоэффективны, весят сущие килобайты, бесплатны и объясняют суть своих действий.
Total votes 37: ↑30 and ↓7+23
Comments33

8 отличных хитростей jQuery

Reading time4 min
Views28K
imageКому не нравится jQuery? Это быстрая и простая javascript-библиотека стала очень популярной в 2008 году. В этой статье я собрал список восьми очень полезных jQuery-техник, советов и хитростей.
Читать дальше →
Total votes 122: ↑95 and ↓27+68
Comments85

О самоподписных сертификатах

Reading time5 min
Views24K
В связи с моим участием в проекте fin-ack.com постоянно сталкиваюсь с подобными замечаниями:
я не доверяю вашому самоподписному сертификату, почему вы не купите «нормальный» сертификат?

Как по мне, это один из случаев недопонимания и предрассудков, которых так много в отношении безопасности в Интернете. (Вроде знаменитых «Хакеров, крекеров, спамов, куки» :). Хочу разобрать его с двух точек зрения: как человека, некоторое время проработавшего в сфере защиты информации в банке и имевшего дело с большинством аспектов информационной безопасности, и как человека, занимающегося разработкой и развитием интернет-сервиса.

Но сперва отвечу на вопрос, почему у нас нет «нормального» сертификата? (На самом деле, с недавнего времени есть :) Самая главная причина в том, что в нашем списке приоритетов этот пункт стоял на N-ном месте, и только сейчас все N-1 предыдущих пунктов были выполнены. Когда работаешь над новым проектом, всегда приходится от чего-то отказываться, потому что ресурсы, прежде всего временные, ограничены…

А почему же он стоял аж на N-ном месте?
Во-первых, зачем вообще нужен сертификат SSL? Для того, чтобы зашифровать HTTP-соединение между браузером и сайтом, по которому будет передаваться пароль и какие-то другие конфиденциальные данные. Что изменится, если сертификат не подписан доверенным центром сертификации? Ничего! Соединение все равно будет зашифрованно точно также. Единственная возможная проблема: атака человек-посредине, которая в Интернете обычно является phishing'ом или pharming'ом.
  • При фишинге пользователя перенаправляют на сайт с похожим URL. При этом в браузере обязательно появится предупреждение про сертификат (такое же предупреждение появляется и при первом заходе на реальный сайт с самоподписным сертификатом).

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

Но это только начало...
Total votes 83: ↑59 and ↓24+35
Comments174

Полный AJAX. Теория и Примеры. Фишки и Фичи

Reading time8 min
Views34K
По многочисленным просьбам начинающих (и не только) AJAX разработчиков, решил выделить часть своего времени для описания некоторых хитростей и приемов, которыми пользуюсь при построении сложных, динамических веб-приложений. Статья представляет из себя смесь теоретических выкладок и практических примеров.

Наибольшие трудности при построении сайтов c применением AJAX возникают при реализации механизма AHAH (Asynchronous HTML and HTTP). Особенно выполнение на лету подгружаемых Javascript-ов. Также есть куча дополнительного «гемороя» при разработке AJAX сайтов и веб-приложений. Вы можете ознакомится с детальным описанием некоторых существующих проблем. Из-за указанных сложностей, многие разработчики отказываются от более насыщенного внедрения AJAX.

Однако, мало кто знает, что перечисленные проблемы можно решить.
Читать дальше →
Total votes 112: ↑95 and ↓17+78
Comments141

MySQL: Хранимые процедуры и динамический SQL

Reading time1 min
Views51K
Если кто-либо из вас пытался сделать вроде бы очевидную вещь, а именно, создать sql запрос внутри процедуры передав ей имя таблицы, пользователя и т.п., то скорее всего натыкались на ошибку, о том, что нельзя использовать динамический sql.

SET @mytable='users';
SELECT * FROM @mytable;

Такая конструкция работать не будет. А что же делать, чтобы она заработала?
Читать дальше →
Total votes 69: ↑65 and ↓4+61
Comments26

5 способов улучшить ваш CSS

Reading time3 min
Views4.3K
imageПрактически любой человек сможет написать CSS-код, в наше время любая программа сделает это за вас. Но будет ли это хороший CSS? Далее представлены пять советов по совершенствованию вашего CSS
Читать дальше →
Total votes 83: ↑71 and ↓12+59
Comments115

Реально работающие ресурсы, доступные софтверным предпринимателям в России

Reading time4 min
Views953
Часто приходится слышать, что, мол, если предпринимателю нужна поддержка, это значит, что он плохой предприниматель.
Работая в российском Майкрософт и занимаясь проектами по поддержке технологического предпринимательства, я общаюсь со многими предпринимателями, в том числе с теми, кто многого добился и получил всеобщее признание. И четко вижу, что их отличает в первую очередь то, что они никогда не упускают ни единого шанса получить все, что может помочь их бизнесу.
Поэтому я решил опубликовать топик, посвященный тому, какие ресурсы/программы, имеющиеся сейчас на российском рынке, могут _реально_ облегчить жизнь софтверному стартапу. Опишу те, что известны мне (как предоставляемые Майкрософт и нашими партнерами, так и не имеющие отношения к Майкрософт). А сообщество, надеюсь, дополнит.
Читать дальше →
Total votes 51: ↑39 and ↓12+27
Comments18

Онлайн распродажа вещей

Reading time2 min
Views650
image
У Вас есть ненужные Вам вещи?

Наверное, есть, это может быть все что угодно от мелкой цифровой техники и одежды до старой мебели или холодильника. И все это довольно часто просто пылится в углу и не приносит Вам никакой пользы.
Возникает вопрос: «А с этим что делать?»
Довольно распространенный способ избавиться от старой или ненужной вещи — выбросить ее на помойку, но она еще может послужить во благо Вам и другим людям. Для примера, история одной красной скрепки, которая произошла с Кайлом Макдональдом.

Собственно нужно чтобы другие люди узнали о том, что у Вас есть ненужная вещь и на каких условиях Вы готовы с ней расстаться. Именно с этой целью был создан проект My-sale.ru.
Читать дальше →
Total votes 42: ↑36 and ↓6+30
Comments59

«Служили два товарища, ага…» или как продать брошенный заказчиком проект?

Reading time2 min
Views4.7K
Встретили как-то лесной программер Федот и лесной дизайнер Абдул забугорного богатея Джереми. И сказал Джереми: что ж вы, добры молодцы, без дела ходите, талант ваш в землю зарываете? Сделайте мне веб-чудо, золотом оплачу.

Договорились. Задаток золотом взяли, укатил Джереми в забугорье. Прошло полгода, к зиме сделали мастера веб-чудо. И всем оно было замечательно: работало быстро, посетителей радовало, стандартов не нарушало.

Одна печаль
: Джереми все не ехал заказ забирать да должок платить. Уж и Абдул вороньей почтой писал, и Федот в волшебное скайп-зеркало кричал ему – все без толку, не дозваться было Джереми.
Читать дальше →
Total votes 113: ↑99 and ↓14+85
Comments40

Программирование — отстой! Или что-то вроде того

Reading time8 min
Views14K
Предлагаю вниманию читателей перевод статьи "Programming Sucks! Or At Least, It Ought To", опубликованной в «The Daily WTF». Публикация рассказывает о том, как избыток профессионализма на практике мешает эффективности и предназначена скорее для опытных разработчиков, нежели для новичков.
Читать дальше →
Total votes 196: ↑180 and ↓16+164
Comments113

Определение нечетких дубликатов для коротких документов

Reading time3 min
Views7.3K
Хочу поделиться простым, но эффективным алгоритмом определения нечетких копий документов. Есть много статей об использовании для этой цели алгоритма шинглов. Ходят слухи, что большие поисковые системы используют очень похожий алгоритм у себя. Однако, все признают, что шинглы плохо подходят для коротких (3-5 предложений) документов. А в моей задаче надо было работать именно с такими документами. В качестве решения предлагают закольцовывать текст, чтобы как бы сделать из него длинный, но мне кажется, что это не очень правильное решение, точность распознавания дублей все равно будет низкая.

Итак, описание алгоритма, который я использовал:
Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments42

Бибигоша – детский виртуальный мир на Silverlight 2

Reading time1 min
Views2.8K
На конференции “Платформа 2009” мы показали раннюю версию портала Bibigosha.ru. На прошлой неделе сайт официально открылся в экскурсионном режиме.

Бибигоша – это целый виртуальный мир для детей от 3 до 7 лет со своими героями, включая шестилапую(ого?) Бибигошу, играми, загадками и приключениями. Однако практика показывает, что не только дети любят в нее играть :)

Про общее назначение и цели проекта подробно рассказано в пресс-релизе Microsoft и видеосюжете в Вестях. Портал создан в рамках стратегического партнерства ВГТРК и Microsoft.

С технической точки зрения весь игровой мир полностью сделан на Silverlight 2 силами компании TVX. Для комфортной работы в регионах России с медленным Интернетом при первом запуске происходит кэширование большого объема данных. Так что не удивляйтесь, что первый запуск будет несколько долгим. Это только в начале.

Вообще, писать про Бибигошу сложно – это нужно видеть, наблюдать, изучать и играть :)

В будущем будет сделана специальная сеть для общения родителей, а на сайте будут находиться только дети. А пока сайт открыт в экскурсионном режиме всем желающим – так что наслаждайтесь!
Total votes 57: ↑34 and ↓23+11
Comments102

Идеальный шторм. Постмортем неанонсированного проекта.

Reading time8 min
Views2.7K
Сегодня мы шли с Вовчегом, нашим гуру гейм-дизайнером, брать ему кредит на покупку квартиры и обсуждали наш текущий проект.

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



Проект длится 8-ой месяц, будет длиться со всеми многочисленными платформами еще 2-3 месяца. При этом мы сейчас четко видим, какие именно ошибки стоили компании 2-3 месяца разработки и десятки тысяч долларов (надеюсь, что счет на сотни тысяч не пойдет).

КОМАНДА

Главная ошибка в управлении моя — это ошибка выбора команды:
— Ставка на молодую команду, которая так и не смогла, по сути, «развернуться» на этом очень сложном во всех аспектах проекте.
— Связка молодой PM + опытный PMA, которая провалилась сразу. Мне показалось, что я смогу реализовать то, что, мне тогда казалось, работало в Нивале.
— Мы фатально ошиблись с оценкой сложности задачи по гейм-дизайну, что привело к тому, что связка дизайнер-программист оказалась удаленной, что почти катастрофа для проекта нашей сложности.

Мне потребовалось целых 2 месяца, чтобы осознать, насколько плоха ситуация, меня только совсем чуть-чуть оправдывает, что из этих 2 месяцев 2 недели я был в отпуске в тёплом месте. То, что я увидел после отпуска, было катастрофой. Я понял, _насколько_ категорически и масштабно я облажался. Кажется, еще никогда раньше я не ошибался ТАК круто.

Читать дальше →
Total votes 145: ↑135 and ↓10+125
Comments96

Оптимизации системы разделения прав доступа в веб-приложении

Reading time19 min
Views7.5K
После написания прошлой статьи про реализацию системы разделения прав доступа в веб-приложении, появилось множество интересных комментариев. В них в основном велись споры о том, что можно сделать её ещё лучше.

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

В этой статье я рассмотрю:
  1. Битовые поля, оптимизация
  2. Serialize с денормализацией таблиц БД
  3. Вы узнаете, как работает система, подобная Zend ACL

Читать дальше →
Total votes 38: ↑30 and ↓8+22
Comments47

Erlang в Рисоваське, часть 1 — обзор языка

Reading time6 min
Views10K
В этой и последующих статьях (часть 2) я хочу рассказать про язык программирования Erlang/Эрланг, его использование в нашем проекте Рисоваська, а также какие приложения и готовые модули (большинство которых тоже написаны на Эрланге) мы использовали в серверной части.

Поискав на Хабре по теме Erlang/Эрланг, понял, что тема освещена мало, есть всего пара действительно хороших статей на тему языка (например, отличная статья от создателя языка в переводе alex_blank What's all this fuss about Erlang? написанная понятным, доходчивым языком). Именно поэтому хочется остановиться сначала на самом языке и его отличиях от традиционных языков.
Читать дальше →
Total votes 75: ↑71 and ↓4+67
Comments68

Information

Rating
Does not participate
Location
Россия
Registered
Activity