Шпаргалко Сумасшедшего ПрограммЁра Waiting of summer

10Апр/120

Сравнительно честный способ.

Остап Бендер (Миронов)

Остап Бендер (Миронов)

Радует лента.ру, как обычно. Своей свеженькой статьёй они напомнили мне подзабытые творения Ильфа и Петрова, а конкретнее Остапа Сулеймана Берта-Мария Бендер Бея, турецкоподданного, знавшего аж целых "четыреста способов сравнительно честного отъёма денег". Впрочем, российские силовые и правительственные организации, на мой взгляд, вполне могут потягаться с Великим Комбинатором. На этот раз, если вкратце, придуман довольно забавный способ выудить некоторое количество бабла из бюджета. Способ, безусловно, направлен на повышение благосостояния общества, защиту гражданина и обеспечение его безопасности от мерзких интернет-злодеев. Это, можно даже не сомневаться, инновационное решение в рамках политического и промышленного курса, намеченного солнцеликим.

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

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



Джон воскликнул: "What The Fuck?" RSS читай чудак!

15Ноя/112

jQuery в массы

Логотип jQuery

Логотип jQuery

Шалом тебе, дражайший читатель.

Вот сейчас залез на сайт translate.ru запиленный небезызвестной компанией PROMT - если кто не в курсе, это онлайн-переводчик. И обратил внимание, что там чуть ли не половина интерфейса сделана на jQuery: всплывающие окошки, например, виртуальная клавиатура, и так далее. Что и говорить, этот замечательный продукт за несколько последних лет изменил картину разработки AJAX-приложений. Раньше все интерфейсы как правило писались "с нуля". Фреймворки, конечно, были, но писать много всё равно приходилось. jQuery, слоган которой "Write less, do more" (пишите меньше, делайте больше) облегчил жизнь веб-программистам. Жаль, что есть ещё некоторые дремучие коллеги (от сотрудничества с которыми я кстати избавился уже довольно давно, к счастью), не приемлют фреймворки, и предпочитают делать всё по-старинке. Руками. С нуля. Это грустно, и напоминает изобретение велосипедов. В jQuery многие вещи делаются одной-двумя строчками, просто потому что это уже реализовано за вас. К примеру исчезающий и появляющийся слой делается примерно так:

$('#div_id').toggle('slow');

И это всё. Примерно такой же по объёму размер кода для отправки ajax-запроса на сервер (ну немного больше, хорошо). Я помню, на старой работе была громоздкая функция ajax_request(), которую написал как раз наш доблестный дремучий коллега. И использовать надо было именно её. Мотивация была смешная: "а зачем нам лишние 80 кб кода подгружаемого?!". При том, что размер страницы был в районе 500 кб - 1 мб, и генерация её на отладочных машинах занимала секунд 7 (кэша тоже не было). Как я уже говорил, я к счастью избавился от той работы, но контраст с текущей, где оптимизация и скорость разработки стоят на первом месте - это выглядит дикостью. Где я сейчас работаю, например, jQuery активно используется в новых проектах.

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

В заключение несколько ссылок по теме:

Собственно, сайт самой библиотеки jQuery.

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



Если ты на ветку влез - подпишись на RSS!

Метки записи: , , , 2 Комментарии
29Сен/112

Резка строк в UTF-8 в PHP

Время от времени в программизме для веб возникает задача обрезать строчку скажем на 1000 символов - чтобы было нечто типа "строка..." и "Читать далее" (как например сделано в этом блоге на слишком длинных заметках. Проблемы начинаются с резкой UTF-8 строк, потому что стандартная функция substr в этом отношении демотивирует - байта на каждый символ два, а она режет по одному... В результате может от какой-нибудь буквы "ё", остаться неприглядный однобайтовый служебный символ.

Если у вас есть расширение php_mbstring - нет проблем, там есть функция mb_substr, которая корректно обрабатывает юникод. А вот если нету (скажем, на высоконагруженных проектах интерпретатор PHP как правило максимально облегчён - без всяких лишних расширений) то уже сложнее. Однако, выход есть - не обязательно резать по буквам, можно резать по словам. Этот метод я случайно обнаружил в одном из рабочих проектов и просто поразился простоте и эффективности решения такой уже тривиальной задачи. Собственно, сабж:

$arr = explode(' ', $text);
$arr = array_slice($arr, 50);
$text = implode(' ', $arr[0]).'...';
unset($arr);

В результате у нас имеется выборка из 50 слов, которая выглядит куда лучше, чем разрыв слов в неожиданных местах.



Объявление для повес: подпишись на RSS!

1Сен/118

KeyCAPTCHA – 2

Шалом тебе, дражайший читатель!

Первое сентября - день знаний, как известно. Но иногда этот день приносит знания, в общем-то, лишние, и ни к чему практически полезному не приводящие. Прямо как сегодня - сложилось даже ощущение, что на глазах разворачивается прямо-таки "детективная" история :) Итак, ход событий. Не так давно, в капче на блоге - в форме добавления комментариев, я заметил рекламку, и, порывшись в сервисе KeyCAPTCHA - так и не нашёл, где её отключить. Ну да, криворукость плюс запущенный программизм головного мозга не способствуют в разгаре рабочего дня внимательности - такая настройка там есть. В общем, от греха отключил эту капчу, и поставил старую (кстати как оказалось зря).

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

Однако как оказалось, история имеет продолжение. Вечером я обнаружил в комментариях к заметке комментарии от службы поддержки KeyCAPTCHA - вы можете их видеть внизу этой заметки. Очень полезно, знаете ли, выслушать мнение другой стороны. По версии KeyCAPTCHA - человек по имени Геннадий, написавший все эти обличительные материалы - работал некогда в организации, создавшей данный антиспам-сервис. Затем он попался на вымогательстве крупной суммы денег, причем процесс вымогательства был заснят на видео, и передан "в органы". Соответственно против Геннадия было заведено уголовное дело по обвинению в вымогательстве, и он, обиженный эдаким "ходом конём" со стороны работодателя - теперь занимается очернением в интернетах и сервиса KeyCAPTCHA, и команды его создавшей.

Справедливости ради, надо заметить, что например на форуме того же античата сохранилась полемика этого же Геннадия с кем-то из команды KeyCAPTCHA, где высказывается им версия на тему. Версия гласит, что работодатель жестоко наеобманул его с деньгами при увольнении, не заплатив ему причитающееся, а обвинив его в вымогательстве своих же денег.

Честно говоря, никакой пользы мне (да и вам) эта информация не принесла. Я полагаю, что в данном случае пусть разбирается следствие, в особенности если у него есть видеозаписи "процесса" так сказать. Хоть я и с сомнением отношусь к способности российских следователей правильно воспроизвести запись, тем не менее этим обязаны заниматься именно они. А что имеем мы, как клиенты, в сухом остатке так сказать?

Говоря по правде - мы имеем хороший, годный сервис, который со своей задачей справляется - спам он режет нещадно, проскакивают единицы, да и то в основном "ручной". А это уже извините - на текущий момент подобные сервисы на вес золота для нас, пользователей, которые не хотят видеть спам на своих ресурсах. Какие там отношения у бизнеса-владельца со своими сотрудниками - нас не касается. Будет свой бизнес - будут свои проблемы и сотрудники. Пока работаем по найму - тоже имеем (или не имеем) свои проблемы. Разбираться в том, кто кого обидел и обманул, а кто подвергся вымогательству в масштабах всей бизнес-среды этой страны - жизни не хватит. Однако положительным показателем является активность сотрудников KeyKAPTCHA - буквально спустя какие-то часы после публикации этой заметки - в комментарии написали из техподдержки, с описанием ситуации, а главное - с тем, как найти настройку ту злосчастную, насчёт рекламы :) А значит бизнес о клиентах всё-таки заботится. Причем уже имелся положительный опыт общения с техподдержкой их - отвечали всегда оперативно.

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

Кстати в процессе размышлений пришла в голову ещё одна мысль - ведёте ли вы бизнес, работаете ли по найму - надо стараться максимально корректно (юридически) и правильно оформить свои отношения. Это, в первую очередь, трудовой договор и соглашение о конфиденциальности. Данные документы хотя и несут некоторые налоговые убытки (хотя их тоже можно минимизировать), тем не менее неоценимо помогают при выяснении отношений. Во-первых, даже если у вас "серая" схема оплаты труда - трудовое соглашение так или иначе регламентирует отношения в плане обязанностей сотрудника, системы выплат. Соглашение о конфиденциальности предотвращает разглашение коммерчески значимой информации третьим лицам. При изменении условий работы - оформляются документально дополнительные соглашения между работодателем и работником. В конце концов, если возникают спорные моменты - есть с чем обращаться в суд. Несмотря на налоговые убытки (которые, насколько мне известно, составляют в районе 43% от той суммы, которую работник получает на руки "вбелую") и увеличение бухгалтерской волокиты, трудовое соглашение и соглашение о коммерческой тайне позволяют юридически защитить как работника, так и нанимателя. Ими пренебрегать ни в коем случае не стоит, и практика уже не первого бизнеса это отчётливо показывает.

PS. Кстати чисто ради любопытства посмотрел статистику - за 5 дней сентября (с 01.09.2011 по 05.09.2011) было 2112 запросов на получение KeyCAPTCHA из них успешно собирались всего 30 штук... То есть в идеале количество спам-комментариев, которые она остановила - 2112 - 30 = 2082 штуки. Разумеется, это не показатель, так как 2112 - это просто количество загрузок страниц сайта за 5 дней. Из них порядка 5-10%  могли быть спам-ботами. То есть в целом порядка 100 - 200 мусорных комментов она отрезала. Когда говорят о ручной модерации такого количества дерьма, это по меньшей мере забавно. Как будто мне больше заняться нечем, кроме как вылавливать спам из каментов...



В туалете этот канал читать тоже можно. Правда для иных нужд лучше купите газету :)

27Июл/114

Забавные запреты

Шейлок. Фото с сайта a4format.ru

Шейлок. Фото с сайта a4format.ru

Шалом тебе, дражайший читатель.

Доставила тут новость на майл.ру, однако :) В том плане, что некое "принципиально новое решение" обещает заблокировать файлообмен через торренты. Цитирую:

Пермский старт-ап "Pirate Pay" уже осенью этого года может парализовать пиратскую раздачу кино, музыки и компьютерных программ на торрент-трекерах по всему миру, сообщает «Российская газета».

Разработчики проекта говорят о том, что их продуктом уже заинтересовались некоторые российские и зарубежные правообладатели, кроме того, "Pirate Pay" поддержала Ассоциация теле- и кинопродюсеров России.

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

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

По мнению экспертов, разработка пермских программистов, в первую очередь, может быть востребована российским рынком, ведь количество контрафактной продукции на нем просто огромно. Если в 2009 году объем пиратского контента оценивался на нем в 8,48 миллиона DVD-дисков, то в текущем году может составить уже 13,74 миллиона DVD-дисков, а в 2014 году достичь 27,74 миллиона DVD. Легальных DVD-дисков на рынке всего 3,4 миллиона. В то же время в пиратских файлообменах гуляют около 50 миллионов копий фильмов.

В начале марта Фонд посевного финансирования Microsoft, который был создан в рамках сотрудничества компании Microsoft с фондом «Сколково» и призван оказывать прямую финансовую поддержку российским стартапам в области программного обеспечения и интернет-услуг, вручил российскому разработчику грант в размере $100 тысяч, отмечает «Газета.ру».

Как сказал Lef - это даже не один, а целых два шага назад. Дело в том, что в 2005 году подобное нововведение могло бы убить торрент-трекеры, так как всё было завязано на анонсер. Но уже довольно приличное время существует возможность использования DHT трекеров. Это во-первых. Во-вторых, грант от Microsoft нам кагбэ намекает, что речь идёт, возможно, о дополнении к операционным системам этой фирмы, которое будет так или иначе контроллировать характер проходящего трафика, и блокировать неугодный. Ну например явное использование p2p протоколов или обращения к каким-либо анонсерам. Быть может, данное ПО будет ставиться не на пользовательские машины, а на гейты провайдеров, но это довольно сомнительно, так как любой нормальный провайдер просто воспользуется в конкурентных целях тем, что у всех эти дополнения стоят, а у него нет. Да и *nix в основном у провайдеров...

За счёт чего будет делаться гешефт? Опять же, я подозреваю, что будут какие-либо списки "запрещённых раздач", попросту трекеров, или будет практиковаться наличие некоторых идентификаторов, по которым будет блокироваться трафик между клиентами и трекером. Так или иначе, речь вероятно идёт о блокировке трафика, либо блокировке популярных программ - клиентов. По каким именно признакам - уже вторично.

А что делать пользователям, и почему вообще это два шага назад? Первый понятно - DHT. А второй?

А второй заключается, для начала, в наличии разнообразных скрытосетей - типа I2P, которая в принципе под файлообмен и затачивалась, в том числе. А кроме того - современные дистрибутивы Linux по степени удобства для пользователя - сравнимы с той же Windows 7. Например я уже довольно давно сижу в openSUSE, а в Windows перезагружаюсь только поиграть. И в openSUSE нет левых закрытых дополнений (ну разве что может какая-нибудь проприетарщина типа mono или java). Опять же такой клиент как qBitTorrent почти идентичен uTorrent, столь привычному многим, и работает в Linux, и помимо этого - он имеет открытый исходный код, что в принципе позволяет переработать его в течение недели под I2P сеть, да и так, без переработок, торренты в i2p уже есть. Понимаете, куда клоню? Учитывая, что в I2P нет IP-адресов, то идентификация пользователей представляет собой не менее сложную задачу, чем вызвать дождь в Сахаре в период засухи. А средняя скорость тоннеля в 20 кб/с позволяет уже при 10 раздающих-скачивающих чувствовать себя вполне кошерно, как и в обычном, большом интернете.

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



Чтобы жизнь была как праздник - RSS читай проказник!

9Июл/111

Информационная открытость? Где?

Президентский дворец в Ашхабаде. Фото Kolanin

Президентский дворец в Ашхабаде. Фото Kolanin

Здравствуй тебе, дражайший читатель.

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

Так вот, начались там 8 июля (кажется) взрывы, треш и содомия во мгле ада. И сразу же был отключен интернет, сотовая связь, и вообще - все средства коммуникаций. Я не удивлюсь, если включили какие-нибудь, так называемые "глушилки" - помехозадающие генераторы, мешающие нормальной радиосвязи. Всё это сделано с целью перекрыть утечки информации о происходящем, о жертвах. Что там - взрыв на военных складах? Теракт? "Петарды взорвались"? Кто погиб, ранен? Нет возможности узнать вообще ничего. Я думаю те, чьи родственники могли там оказаться - кусают локти сейчас, потому что неизвестность - давит похуже самых тяжёлых новостей.



Чтобы скинуть лишний вес - подпишись на RSS!

5Июл/111

keyCaptcha на IPB 2.3.6

KeyCAPTCHA на форуме Шпаргалки

KeyCAPTCHA на форуме Шпаргалки

Продолжение: KeyCAPTCHA 2

И таки здравствуйте, дражайший читатель!

Как вы наверное могли видеть, сайт обзавёлся форумом. Это, меня лично, радует. Но (всегда оно есть, это "но"), стоит в современных интернетах открыть форум на каком-нибудь популярном движке, и всё, подкрадывается зверь писец. Воен в опасносте - спамеры отаке! :) Пробовались разные вариации защиты - то, как ни странно, когда-то рабочая схема "reCaptcha + email validation" уже не работает, как ни прискорбно - боты проходят её как нож масло. Чтожеделать, чтожеделать?!!

Благо, появилось уже новое поколение капчи - keyCaptcha. Она основана не на вводе букаф, а на задании "собери картинку". Пользователю даётся картинка без нескольких фрагментов, и задание - собрать. Естественно, подгонять картинки без зазоров - вовсе не обязательно. Достаточно собрать приблизительно, то есть существует некий разброс координат. Как заявляет производитель:



Хочешь как у Арни пресс? Подпишись на RSS!

30Июн/110

ipb_language – файл русского языка для IPB 2.3.6

Шалом тебе, дражайший читатель!

Обыскался я, по правде сказать, в интернетах этот файл - ipb_language.xml - используется он для русификации английской версии форума Invision Power Board (IPB) 2.3.6 - ссылки есть, а скачать без регистрации, или инако - не получается. В общем, помучившись как следует - сделал проще - скачал "нулёную" кем-то версию - в которой русский язык предустановлен, установил на денвер, экспортировал из админки русский язык в искомый файл, а российское говно - удалил (представьте себе - в нулёнке даже фронтенд не отображался как следует - вылетал из-за каких-то абсолютно левых глюков в языковом кэше). Ну а потом сделал в админке импорт языка, с установкой в параметрах General Configuration кодировку utf8 (именно так, без дефиса).



Даже если ты балбес - подпишись на RSS!

29Май/112

Магический Highload, или о высокой нагрузке.

Титан. Фото с сайта proza.ru

Титан. Фото с сайта proza.ru

И таки здравствуй, дражайший читатель.

Highload, или проекты с высокой нагрузкой, это, на мой взгляд, естественный этап развития любого профессионального программиста, работающего с современным web. Рано или поздно мы приходим к этому (а точнее, учитывая что мы в массе своей всё-таки не бизнесмены, а специалисты - нас находят те самые бизнесмены в лице HR-отделов корпораций). Так получилось, что вот и я попал в эту струю, и по правде сказать весьма доволен - highload вещь интересная и нетривиальная. Однако, интернеты довольно бедны именно технической информацией по хайлоаду. Почему так? Отчасти оттого, что выделить общие принципы построения высоконагруженных систем довольно сложно. Сколько уникальных пользователей / хитов надо, чтобы считать ресурс высоконагруженным? А какая архитектура системы подпадает под это определение? Какие хоть требования к этой архитектуре? Ответить на эти вопросы сложно, но я всё-таки попытаюсь.

И для начала хочется сделать небольшой экскурс в область высокой нагрузки, принципы построения, и так далее. Сразу скажу, я не истина в последней инстанции - highload это продукты как правило уникальные, и реализуемые под конкретные потребности, особенно учитывая шаткий баланс динамика/скорость. Я имею ввиду соотношение динамического (но "тяжёлого") содержимого, и статического - "лёгкого". Рассматривать предмет мы будем на примере абстрактного портала, скажем новостного.

Итак, с чего начинается высокая нагрузка? Эмпирическое правило (вроде сам придумал, да :) ) это когда с нагрузкой перестаёт справляться один физический сервер (сферический, в вакууме). Ну, не хватает его мощностей для обработки существующего потока посетителей. Даже если на нём 24 гигабайта оперативки, два четырёхядерных проца и SCSI накопители в RAID, плюс 100 МБит канал. К слову сервер такой способен вынести очень неплохую нагрузку, только он зараза дорогой. Попроще это схема 4 ядра + 4 гига, Sata диски, и всё тот же канал в 100 МБит. В принципе, учитывая цены, может оказаться дешевле купить пару серверных лезвий за 35 тысяч рублей каждое, чем одного монстра за 250 тех же деревянных килорублей. Да, дражайший читатель, оценка потенциальной нагрузки и железа под неё - тема необъятная.



Объявление для повес: подпишись на RSS!

26Май/110

Про TrustLink и заработок на сайте.

Доллар. Фото с сайта Два рулона.

Доллар. Фото с сайта Два рулона.

И таки здравствуй, дражайший читатель :)

Есть ли у вас свой сайт? Нет, нету? Зря, очень рекомендую. Кроме площадки, где вы можете, собственно, высказываться, это ещё и инструмент небольшого пассивного дохода. А мелочи бывают приятными, не правда ли? Сегодня я хочу поделиться своим опытом по конвертации сайта в деньги, без уничтожения первого :)

Вот представьте - есть у вас сайт. Не обязательно большой, например как этот. Пишете вы на него пишете, вас понемногу цитируют, или вы сами продвигаетесь, преодолели рубеж в полгода существования и ТИц 10 (яндексовской писькомерки)... И?

Вообще, тут есть несколько вариантов. Расскажу о самом денежном, который мне попадался до текущего момента. Если сайт у вас не мусорный (типа сателлита), а наполнен качественным "ручным" контентом, то он может считаться трастовым. То есть поисковая система обоснованно считает, что сайт качественный, и "доверяет" (trust) ему. Ссылки, используемые для продвижения других сайтов - с трастовых ресурсов особенно ценны, и их как оказалось готовы покупать за вполне серьёзные деньги. Я лично проверил данное утверждение, и всё, что пишется ниже является результатом моего опыта и разных экспериментов над этим многострадальным ресурсом.



Экономь свое время используй прогресс: получай информацию по RSS!

Страница 1 из 41234