Как стать автором
Обновить
50
0
Maxim Razin @grep0

Пользователь

Отправить сообщение

Project Euler — решайте алгоритмические задачи и смотрите как это делали другие 30к участников на огромном количестве языков.

Время на прочтение1 мин
Количество просмотров35K
Пару-тройку месяцев назад наткнулся на замечательный ресурс Project Euler.

Project Euler представляет собой набор математических задач, которые вам предлагается решить хоть программным методом, хоть на бумаге.

Для участия в проекте надо пройти быструю регистрацию, после чего можно смело штурмовать алгоритмы.
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии48

Полнотекстовый поиск в веб-проектах: Sphinx, Apache Lucene, Xapian

Время на прочтение15 мин
Количество просмотров55K
Полная авторская верcия из моего блога. Оригинал материала написан специально для Developers.org.ua

Наверное любой современный веб-проект сложно себе представить без… без контента! Да, именно контент в разных его проявлениях сегодня «правит бал» в различных веб-проектах. Не так важно — создаваемый пользователями или получаемый из других источников автоматически — информация является основной любого (ну, или почти любого) проекта. А раз так — то вопрос поиска необходимой информации стоит очень остро. И острее с каждым днем, ввиду стремительного расширения количества этого самого контента, в основном за счёт создаваемого пользователями (это и форумы, и блоги и модные нынче сообщества, вроде Habrahabr.ru). Таким образом, любой разработчик, реализующий сегодня какой-либо проект, сталкивается с потребностью реализовать поиск в своём веб-приложении. При этом требования к такому поиску уже намного сложнее и шире, чем даже год-два назад. Конечно, для каких-то проектов вполне подойдёт и простое решение, к примеру, вполне можно использовать Custom Google Search. Но чем более сложное приложение, и чем сложнее структура контента, если требуются особые виды поиска и обработки результата, или же просто количество или формат данных в вашем проекте особый, вам потребуется собственная поисковая система. Именно своя система, собственный поисковый сервер или сервис, а не сторонний, пусть даже гибкий и настраиваемый. Но что же выбрать, и вообще — какие сейчас на рынке есть поисковые проекты, которые готовы для использования в реальных проектах, не исследовательских или научных, а реальных бизнес-приложениях? Далее мы кратко рассмотрим различные варианты поисковых решений, пригодных для встраивания в ваше веб-приложение или развёртывания на собственном сервере.
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии62

Отладка в Python с помощью консоли

Время на прочтение1 мин
Количество просмотров4.9K
Обычно библиотеки python хорошо документированы. Однако случается, что иногда документации не хватает, особенно если речь заходит о веб-фреймворках и о каком-нибудь параметре request с десятком-другим свойств.

Здесь на помощь может прийти обычная питоновская консоль, которая может услужливо вывалиться в нужный момент прямо посреди исполнявшегося кода веб-сервиса.
Читать дальше →
Всего голосов 2: ↑1 и ↓10
Комментарии8

Очередной HowTo по Vim

Время на прочтение1 мин
Количество просмотров7.6K
Update: похоже, что после обновления хабра появились проблемы с постингом больших статей. Старый текст, который был здесь ранее, хабр обрезал до середины, залить же новый мне не удалось — все время выдается ошибка «Возникла ошибка в получении XML данных: Internal Server Error» (насколько я понял, проблемы именно в большом объеме). Честно говоря, у меня сейчас нет ни времени ни желания разбираться с этим (к тому же переформатирование статьи из блога под хабр занимает довольно много времени), поэтому отсылаю вас к оригиналу — Очередной HowTo по Vim.
Всего голосов 2: ↑2 и ↓0+2
Комментарии30

Translated.by — человеческие переводы

Время на прочтение2 мин
Количество просмотров1.7K

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

На сервисе translated.by происходит коллективный перевод текстов. Cуть в том, что люди помогают друг другу переводить интересные им тексты на иностранных языках. Это могут быть статьи из блогов и журналов, рассказы, выложенные авторами в открытый доступ, документация (скоро будет поддержка разных форматов).

Одни называют это коллаборативным редактированием, другие — краудсорсингом. Можете считать, что это википедия для переводов.

Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии102

Vim magic — Регистры

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

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

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

Овладеть особой магией регистров
Всего голосов 1: ↑1 и ↓0+1
Комментарии14

Церковники воссоздали шрифт Ostrog

Время на прочтение1 мин
Количество просмотров2K
Сообщество славянской типографики создало и выложило в свободный доступ церковнославянский шрифт Ostrog. Его можно скачать в вариантах TrueType (TTF), «дольний» TrueType (TTF), Type1 и «дольний» Type1.



Шрифт разработан на основе старопечатных изданий г. Вильно и Острога второй половины XVI века. Создателем шрифта предположительно является Пётр Мстиславец, белорусский типограф, который приехал в Москву и помог российскому первопечатнику Ивану Фёдорову напечатать его первую книгу. Затем Мстиславец вернулся в Беларусь (ВКЛ) и соорудил там свою типографию. В Беларуси книгопечатание было известно за полвека до этого, так что типография стала далеко не первой.

Как сообщают церковники-типографы, шрифт Ostrog доступен для свободного бесплатного использования, за исключением контекстов, принципиально несовместимых с православием или серьёзно противоречащих нормам христианской нравственности.
Всего голосов 1: ↑1 и ↓0+1
Комментарии70

Несколько не очень известных фич FF3

Время на прочтение1 мин
Количество просмотров782
1. Чтобы скопировать вкладку, нужно перетянуть ее в свободное пространство с зажатым Ctrl.
2. Чтобы переместить вкладку в другое окно, нужно просто перетащить ее в любое место этого окна. Если вкладка была последней, то предыдущее окно закроется автоматически.
3. Размер поискового поля рядом с адресс-баром можно менять — перетаскиванием переборки между ними.
4. Выделять несколько несвязных кусков текста можно с зажатым Ctrl.
5. about:crashes покажет отчеты о падениях браузера

Источник (я написал тут не все фичи, а только те, что показались мне по-настоящему интересны)
Всего голосов 116: ↑93 и ↓23+70
Комментарии98

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

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

...больше про инсайд
Всего голосов 123: ↑122 и ↓1+121
Комментарии77

Окна и буферы

Время на прочтение2 мин
Количество просмотров45K
В vim 7 появились табы — привычный способ навигации по файлам. Когда я работал в eclipse я не раз замечал, что часто скакать между табами не удобно, а знакомство с буферами в emacs натолкнуло на прочтение документации по окнам/буферам в vim.

Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии34

эффективное использование vim: «incredibly tips, part I»

Время на прочтение4 мин
Количество просмотров5.9K
Доброго всем времени суток
стараясь сдержать свое обещанию, хочу опубликовать след. статью об редакторе vim
В статье подразумеваться что читатель уже знаком с азами работы в vim'e, она будет посвящая более эффективному использованию накопленных знаний.

tips 1...
Всего голосов 53: ↑46 и ↓7+39
Комментарии72

«Делай сложное простым» Блог об эффективной разработке на Java

Время на прочтение1 мин
Количество просмотров2.1K
Добрый день, дорогой читатель!

Хочу пояснить, кому может быть интересен этот блог.

Мой читатель :
* разработчик ПО или соболезнующий разработчикам ПО
* владеет основами программирования на java или другом с-подобном языке.
* не думает, что ООП — это организация освобождения Палестины
* интересуется вещами, выходящими за рамки учебников
* любит оптимизировать и автоматизировать свои ежедневные задачи

Если для тебя хотя бы три из пяти пунктов совпали, то нам по пути!
Читать дальше →
Всего голосов 28: ↑21 и ↓7+14
Комментарии17

Яндекс.Интернет, как верстали макет

Время на прочтение1 мин
Количество просмотров2.1K
Заглянув в код страницы internet.yandex.ru, увидел интересную штуку:
< — NOTE: Не подключать в production -->

Сам яваскрипт в файле оказался следующим
Читать дальше →
Всего голосов 190: ↑186 и ↓4+182
Комментарии53

Io programming language

Время на прочтение3 мин
Количество просмотров9.2K
По факту защиты мной диплома образовалось некоторое свободное время и я таки решил собраться и написать про эту чудесную штучку.
Мы в последнее время видим всплеск интереса ко всяким языкам очень высокого уровня, с анонимными функциями, каррингом, мапом/фолдом, метапрограммированием и прочим блэкджэком. Слава богу, я считаю.
Задачи усложняются и если люди применяют относительно низкоуровневые средства разработки зачастую наступает ситуация, когда набор абстракций оказывается мал в рамках решаемой задачи, примерно так появляется «спагетти» и велосипеды. Хорошего мало. Хотя умалять роль низкоуровневого программирования не хочется совершенно, по понятным причинам.

Совсем недавно, в 2002 году, бравый американец Стив Декорте понял, что ему как-то все вокруг не нравится. Ну то есть нравится, но как-то по частям. Нравится Smalltalk своей Ъ-ООП природой, нравится Lisp своей системой метапрограммирования и общей мегаизвратностью, нравится Self своими прототипами, нравится Lua, потому что маленькая и клево встраивается куда угодно. А вот что бы все и сразу — что-то не то. Погоревал бравый американец, да и наколбасил свой собственный язык программирования — Io.

Io


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

Ну что, поехали.
Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии136

Реверсивная клавиатура. Глобальная инновация, но не web 2.0

Время на прочтение3 мин
Количество просмотров3.4K
Есть идея, на которую оформляю патент. Не определился, хочу ли я ради неё создавать стартап, но меня к этому подталкивают сочувствующие. Эпитет «глобальная» говорит лишь о том, что это не очередное копирование западной технологии. Впрочем, так уж получилось, что многие видят во мне желающего сыграть роль «потрясателя основ», что весьма «глобально» звучит и означает (по крайней мере, на ранней стадии) быть мишенью для тухлых помидоров.

Ссылка на видеоролик Реверсивная клавиатура, 3 МБ


А ведь ничего глобального я поначалу не планировал. Просто надоело печатать за столом. Я программист, а программиста иногда трудно отличить по внешним признакам от профессиональной машинистки (а на слух — от дятла). Да, надо много стучать по клавишам. Но почему именно сидя? Впрочем, и сидеть можно по разному. Откинувшись на спинку кресла, нога на ногу, на газоне в парке, и т.п.

Читать дальше →
Всего голосов 98: ↑95 и ↓3+92
Комментарии149

Небольшой обзор Ubuntu MID Edition 8.04

Время на прочтение2 мин
Количество просмотров1.5K
Представляю вашему вниманию вольный перевод статьи о новой версии Ubuntu для интернет-планшетов.

Через 2 месяца после выхода Ubuntu 8.04 и через месяц после первой презентации Ubuntu Notebook Remix, Ubuntu MID Edition 8.04 наконец-то выпущена. Это новый продукт от компании Canonical семейства Ubuntu, разработанный специально для интернет-планшетов (MID). Ubuntu MID Edition представляет собой несколько усечённую версию Ubuntu 8.04 для настольных машин, большинство пакетов ПО специально переработаны для наилучшего быстродействия на процессоре Intel Atom и на мобильной периферии. Это стало возможном благодаря проекту Moblin.

Ubuntu MID Edition 8.04

Читать далее и смотреть скриншоты
Всего голосов 32: ↑31 и ↓1+30
Комментарии19

Инкрементный Backup при подключении USB HDD в Ubuntu

Время на прочтение3 мин
Количество просмотров5.2K
Наконец-то я нашел время заняться свежеприехавшей железкой — USB винт на 500Gb. Этот пост может быть полезен всем, кто задумывался о надежном и удобном бэкапе данных, требующем минимальных затрат усилий.
Итак приступим.

Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии36

Удалённое снятие информации о посещённых страницах

Время на прочтение1 мин
Количество просмотров1.2K
Специалисты по безопасности обращают внимание на одну из самых привычных и естественных функций браузера: информацию о посещённых ссылках в браузере. Как известно, после посещения ссылки и перезагрузки страницы ссылка меняет цвет. Так вот, эту информацию можно очень легко снять с помощью специального скрипта. Опасность подобной атаки часто недооценивается.

Владелец сайта может легко посмотреть, какие ссылки вы уже посетили раньше. Для этого он может даже специально внедрить невидимые ссылки на странице, снимая информацию скриптом. Например, он может проверить, ходили ли вы на сайт конкурента, отметить этот факт в cookies и даже изменить для вас контент сайта соответствующим образом. Конечно же, это явное нарушение приватности. И тем более неприятно знать, что приватную информацию о вас так легко может узнать кто угодно. Разработчики Mozilla обратили внимание на такую опасность ещё в 2002 году, но не придумали, что можно сделать.

Конечно, никто не оспаривает удобство функции для самого пользователя. На самом деле, все мы давно привыкли к ней. Кроме того, владельцы сайта могут применить фантазию и использовать удалённый съём информации из чужого браузера для более качественной фильтрации своего контента. Например, можно не ставить кнопки на некоторые социальные сайты, если пользователь уже ходил по этим ссылкам. Но даже в этом случае законность подобных действий вызывает сомнения.
Читать дальше →
Всего голосов 43: ↑42 и ↓1+41
Комментарии20

Как работают таймеры в JavaScript

Время на прочтение2 мин
Количество просмотров18K
Примечание: ниже перевод заметки John Resig «How JavaScript Timers Work», в которой автор jQuery ясно и подробно излагает тонкости работы различных методов отложенного исполнения функций. Мои комментарии по клиентской производительности далее курсивом.

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

  • var id = setTimeout(fn, delay); — создает единичный таймер, срабатывание которого выливается в вызов определенной функции после указанной задержки. Данный метод возвращает уникальный ID, с помощью которого можно в дальнейшем отменить таймер.
  • var id = setInterval(fn, delay); — похож на предыдущий метод setTimeout, но совершает вызовы заданной функции постоянно (каждый раз с заданной задержкой), пока не будет отменен.
  • clearInterval(id);, clearTimeout(id); — принимают в качестве параметр ID таймера (возвращаемый двумя предыдущими методами) и предотвращают дальнейшие вызовы таймера.


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

Схема работы таймеров в JavaScript

Рисунок 1. Схема работы таймеров в JavaScript

читать дальше на webo.in →
Всего голосов 63: ↑59 и ↓4+55
Комментарии55

Crop & Resize на страницах ваших сайтов

Время на прочтение3 мин
Количество просмотров32K
Пройдясь по хабра-поиску выяснил, что готового решения для кропа-ресайза изображений, на движке JavaScript/HTML/CSS еще не предлагалось. Поэтому, позвольте представить вашему вниманию модуль для ваших сайтов, частично реализуюший функционал редактирования, распространенный на фото-хостингах.

К делу

Внешне задумка выглядит так:


Читать дальше →
Всего голосов 117: ↑102 и ↓15+87
Комментарии122
12 ...
7

Информация

В рейтинге
Не участвует
Откуда
Mountain View, California, США
Зарегистрирован
Активность