Search
Write a publication
Pull to refresh
1
0
jj_killer @jj_killer

User

Send message

Реализация нечеткого поиска

Reading time6 min
Views43K


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

В данной статье описывается возможная реализация нечеткого поиска, которая была применена для поиска на сайте edatuda.ru.
Читать дальше →

Еще немного о дескрипторах в Python

Reading time3 min
Views19K
Не так давно на Хабре уже был перевод статьи Раймонда Хеттингера Руководство к дескрипторам. В этой статье я постараюсь рассмотреть вопросы, которые возникли у меня после прочтения. Будет немного примеров кода, собственно вопросов и ответов к ним. Для понимания того, о чем речь, вам нужно знать, что такое дескрипторы и зачем они.

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

Инструкция-шпаргалка для начинающих

Reading time2 min
Views134K
Если в один прекрасный момент вам ударило в голову желание насадить разумное, доброе, вечное, и пересадить всех с SVN на GIT, сразу встают три проблемы:
  • Объяснить зачем это нужно разработчикам и руководству
  • Ввести в обиход новую схему работы с кодом
  • Научить ничего не подозревающих девелоперов новым техникам
Читать дальше →

Прозрачное проксирование в I2P и Tor

Reading time2 min
Views41K
Всем привет!
Захотелось мне установить кеширующий прокси на основе Polipo, ну и заодно настроить прозрачное проксирование i2p и Tor. Из всех сервисов, которые есть в этих анонимных сетях(почта, торренты и прочее) я использую только веб, так что, скорее всего, вы не сможете использовать сервисы, которые используют не http протокол, если последуете по этой инструкции.
Есть у меня домашний сервер на Debian, который раздает интернет. Использовал TinyProxy в качестве распределителя на основе доменов, два демона polipo — один для кеширования интернета, второй для(в большей степени) преобразования socks5 в http прокси, чтобы прописать ее в TinyProxy, ну еще и кеширует Tor трафик отдельно; dnsmasq для резолва адресов .i2p и .onion(он у меня и до этого использовался и для DNS, и для DHCP).
Будем считать, что I2P и Tor уже настроены и работают.

                I2P (4444)
                /
LAN port — TinyProxy (8888) — Polipo-WAN (8123)
                \
                Polipo-Tor (8124) — Tor (9050)
Читать дальше →

Ликбез по псевдослучайным генераторам

Reading time4 min
Views5.8K
На размышления о необходимости генерации псевдослучайных паролей меня натолкнула достаточно безрадостная статистика взлома паролей, созданных при помощи МОЗГ v1.0; однако взять какой-то первый попавшийся программный генератор паролей и с помощью него поменять все пароли — выглядит безрассудством. Я не проводил детальный анализ готовых программ-генераторов, однако расскажу некоторые достаточно простые, но познавательные факты, связанные с математикой генерации псевдослучайных чисел хорошего качества, которые позволят выбрать нужную программу самостоятельно.
Читать дальше →

Spawnfest ↺ July 9-10, 2011

Reading time1 min
Views598
Spawnfest — ежегодное 48-часовое соревнование разработчиков на языке Erlang, где Вы можете посоревноваться с другими разработчиками в создавании самого лучшего приложения Erlang, библиотеки или чего-либо еще, что Вам нравится! Событие произойдет 9-ого и 10-ого июля.

Огранизаторы говорят, “Мы надеемся, что Spawnfest поможет сплотить сообщество разработчиков Erlang и заинтересовать людей нашим любимым языком программирования.”

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

Спонсорами мероприятия являются Github, Erlang Solutions, Spawngrid, O'Reilly, Manning и другие компании.

В число судей входят Bob Ippolito и Ulf Wiger.

Неблокирующий TCP сервер без использования undocumented features

Reading time5 min
Views5.2K

Введение


В замечательной статье с trapexit «Building a Non-blocking TCP server using OTP principles» рассказывается, как построить неблокирующий TCP сервер используя принципы OTP. Думаю, каждый, кто начинал изучать elrlang рано или поздно сталкивался с этой статьей. Для построения неблокирующего TCP сервера в указанной выше статье используется недокументированный функционал из модуля prim_inet.

Не буду филосовствовать хорошо или плохо использовать undocumented features, в некоторых «костыльных» решениях это действительно нужно, в продакшене я бы предпочел использовать проверенные средства. На заметку, даже в самой статье автор предупреждает: "Examining prim_inet module reveals an interesting fact that the actual call to inet driver to accept a client socket is asynchronous. While this is a non-documented property, which means that the OTP team is free to change this implementation, we will exploit this functionality in the construction of our server [1]."
Читать дальше →

Делаем из Linux From Scratch свой универсальный дистрибутив

Reading time9 min
Views16K
Так уж случилось, что пару лет назад по долгу службы на команду разработчиков, к которой я отношусь, свалилась неожиданная задача — разработка системы управления оборудованием (в этом-то как-раз неожиданности нет, ибо направление разработок такое) с управляющим PC под Linux.
Разработки линуксовой части велись (да и ведутся) под Ubuntu, в среде Code::Blocks. Но, как показала практика, для качественной работы нужно что-то гораздо более легкое с гарантированным временем отклика. Для работы было достаточно консоли, так как задачи организации пользовательского интерфейса решались на подключаемом по TCP/IP удаленном компьютере.
Тогда и пришла идея использовать дистрибутив Linux собственной сборки, чем (сборкой дистрибутива), собственно, в свободное время я и занялся. Выбор пал на LFS. Про то что такое LFS уже неоднократно писали даже на Хабре, я же опишу решение нескольких дополнительных (кроме простенького Linux'а) задач, вставших передо мной в нашем конкретном случае.
Поначалу такая задача была одна — использовать real-time ядро.
Однако дальше, когда идея USB-флешки с дистрибутивом, пришлась всем по душе, то появились задачи размножения флешек и запуска системы на различных компьютерах (тестовых стендов много, имея свою флешку суешь в карман и иди к любому). Вот тут и появились проблемы — LFS не обладает 100% переносимостью с одного компьютера на другой. Для ее адаптации к конкретному компьютеру нужно править некоторые скрипты, что в условиях команды вчерашних Windows-кодеров проблематично (на виртуалку с Ubuntu некоторые пересели, но консоль и скрипты — это беда). Размножение системы также требует повторения некоторых манипуляций, проделываемых в процессе сборки (тот же GRUB установить).
Читать дальше →

Анализ реальных паролей пользователей и улучшенный полный перебор

Reading time3 min
Views8.5K
Прочитал сегодня на хабре перевод статьи Распределение символов в паролях. Захотелось провести свой небольшой анализ. Интерес для меня представляют длины паролей, первые символы паролей и используемые в паролях биграммы (пар смежных символов). А также в статье будет рассмотрен алгоритм улучшенного полного перебора паролей.
Читать дальше →

Знакомство с межпроцессным взаимодействием на Linux

Reading time11 min
Views224K
Межпроцессное взаимодействие (Inter-process communication (IPC)) — это набор методов для обмена данными между потоками процессов. Процессы могут быть запущены как на одном и том же компьютере, так и на разных, соединенных сетью. IPC бывают нескольких типов: «сигнал», «сокет», «семафор», «файл», «сообщение»…

В данной статье я хочу рассмотреть всего 3 типа IPC:
  1. именованный канал
  2. разделенная память
  3. семафор
Отступление: данная статья является учебной и расчитана на людей, только еще вступающих на путь системного программирования. Ее главный замысел — познакомиться с различными способами взаимодействия между процессами на POSIX-совместимой ОС.
Читать дальше →

Веб-разработка на Go

Reading time13 min
Views27K
Статья основана на codelab с сайта Go, но не ограничивается им. По ходу прочтения статьи можно будет узнать о структурах данных Go, динамических массивах, использовании библиотек http, template, regexp для создания веб-приложения, шаблонизации и фильтрации ввода, соответственно.
image
Для понимания статьи необходимо немножко уметь программировать, не пугаться слов unix и веб. Основы языка будут изложены в статье.
Go!

Руководство к дескрипторам

Reading time10 min
Views175K

Краткий обзор


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

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

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

Стартап с нуля: история Github

Reading time8 min
Views5.9K
Это интервью Криса Уонстрота, CEO и сооснователя Github. Данное интервью — часть серии “Bootstrapped, Profitable, & Proud” о компаниях с выручкой более миллиона долларов, обошедшихся без венчурного финансирования на старте и приносящих доход.

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

Учим bash-скрипты, пишем Sokoban

Reading time4 min
Views139K
Мне кажется, что на свете еще есть люди, которые хорошо знают несколько языков программирования, но при этом не пишут скриптов для bash, потому что скриптовый язык bash выглядит для них слишком странным. Чтобы доказать, что bash — это несложно, я написала игру Сокобан (или Грузчик, кому как нравится), и хочу рассказать, как она работает.
Краткая справка по bash, скриншот игры, исходный код и ссылка на файл - под катом

Строю сайты! Like a boss

Reading time6 min
Views3.3K
Like a boss

www.youtube.com/watch?v=NisCkxU544c

Посмотрев презентацию Юрия (yrashk) с Erlang Conference о веб-фреймворках в эрланге я заинтересовался и решил сделать сайтик не на node.js, как намеревался изначально, а используя какой-нибудь эрланговский фреймворк.

В итоге я наткнулся на фреймворк Chicago Boss. Про сам фреймворк я слышал и раньше, но пользоваться пока не довелось.

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

Тестирование. Начало

Reading time4 min
Views127K

Привет. В этой серии постов я попробую рассказать про тестирование кода на питоне, в частности проектов django. Мы рассмотрим модульное тестирование (юнит-тесты), статический анализ кода и некоторые подводные камни тестирования веб-сайтов.

Вводную часть о пользе тестирования опустим — код, покрытый тестами, становится мягким и шелковистым, про это только ленивый еще не читал / писал.
Читать дальше →

Google начинает учитывать в выдаче мета-теги rel="author" и rel="me"

Reading time2 min
Views9.9K
С 7 июня Google начал учитывать в поисковой выдаче авторский мета-тег HTML5 (rel="author") со ссылкой на личный профиль автора.

Written by <a rel="author" href="../authors/mattcutts">Matt Cutts</a>

По правилам использования авторских мета-тегов личная страница автора обязательно должна располагаться на том же домене, что и авторский текст. Для связывания страниц на разных доменах с одним автором используются взаимные ссылки с пометкой XFN (rel="me"). Если на Хабре стоит ссылка на личную страницу автора,

<a rel="me" href="http://mattcutts.com">Read more about Matt</a>

то на домене mattcutts.com должна быть обратная ссылка на Хабр:

Matt has also written <a rel="me" href="http://mattcutts.habrahabr.ru/blog/">lots of articles for the Habrahabr</a>.
Читать дальше →

Как применять Linux epoll в Python

Reading time23 min
Views25K
В статье описывается:
  • Примеры использования блокирующих сокетов
  • Преимущества асинхронных сокетов и Linux epoll
  • Примеры асинхронного использования сокетов через epoll
  • Вопросы производительности
  • Исходный код
Читать дальше →

Улучшаем notify-send. Добавление нового сообщения в предыдущее

Reading time1 min
Views6.7K
Несколько версий назад в Ubuntu появилась новая система оповещений — libnotify. Она предоставляет ненавязчивый способ сообщить что-то пользователю, не мешая его работе.
Но при всех её достоинствах, есть и недостатки. Например, то что они некликабельны смущает большое количество пользователей. А еще — если вы получаете несколько таких сообщений, то они будут показываться подряд с интервалом в 10 секунд. И сейчас мы попробуем частично это исправить.

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

NumPy, пособие для новичков. Часть 1

Reading time19 min
Views245K
NumPyLogoNumPy — это расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами.

Первая часть учебника рассказывает об основах работы с NumPy: создании массивов, их атрибутах, базовых операциях, поэлементном применении функций, индексах, срезах, итерировании. Рассматриваются различные манипуляции с преобразованием формы массива, объединение массивов из нескольких и наоборот — разбиение одного на несколько более мелких. В конце мы обсудим поверхностное и глубокое копирование.
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity