Pull to refresh
0
@Tobanabread⁠-⁠only

User

Send message

С чего начинается поисковик, или несколько мыслей про crawler

Reading time3 min
Views15K
В продолжение начатой темы про собственную поисковую машину

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

Очевидно, надо иметь очередь страниц, которые надо загрузить из web, хотя бы для того чтобы потом на них смотреть длинными зимними вечерами, если ничего лучшего не придумать. Я предпочитаю иметь очередь сайтов и их главных страниц, и локальную мини очередь того что я буду обрабатывать в данное время. Причина проста – список всех страниц которые я хотел бы загрузить просто за месяц – может существенно превысить объем моего немаленького винчестера :), поэтому я храню только то что действительно необходимо – сайты, их на данный момент 600 тысяч, и их приоритеты и времена загрузки.
Читать дальше →

Поисковые технологии или в чем загвоздка написать свой поисковик

Reading time3 min
Views59K
Когда-то давно взбрела мне в голову идея: написать свой собственный поисковик. Было это очень давно, тогда я еще учился в ВУЗе, мало чего знал про технологии разработки больших проектов, зато отлично владел парой десятков языков программирования и протоколов, да и сайтов своих к тому времени было понаделано много.

Ну есть у меня тяга к монструозным проектам, да…

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

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

10 способов улучшить свои навыки программирования

Reading time4 min
Views89K

1. Выучить новый язык программирования


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

Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

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

Центр управления доменами 2ns.info

Reading time7 min
Views3.1K
Каждый уважающий себя юзер имеет про запас домен-другой, и вовсе не обязательно для нужд киберсквоттинга, а вполне себе для личных или рабочих потребностей.

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



Чтобы решить эту головную боль и был создан полезный стартап 2ns.info, который представляет собой своеобразный пульт управления доменами, позволяющий сосредоточить в одном месте все нужные сервисы:
— и дополнительные, но полезные фишки:

Проект действительно очень интересный, его подробный обзор — под катом.

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

Вопрос: но как развить силу воли если нету силы воли? Попробуем ответить

Reading time2 min
Views38K
В одних комментариях прозвучал такой вопрос:

> но как развить силу воли если нету силы воли?

Сила воли есть у каждого. Слабая, крошечная, но есть. Поэтому весь вопрос в том, как ее, такую слабую, тренировать.

Самое простое — это аналогия со спортивными упражнениями.

Не нужно сразу стараться поднять 100кг штангу. Надорветесь, попортите нервы и настроение.

Начните с чего-то более осязаемого, с такого, что вы сможете поднять восемь раз. Например, 40 килограмм. Поднимайте их регулярно и через месяц сможете поднимать 60. Через три — 80. Если вы были упорны, то через полгода будет и долгожданный центнер.

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

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

Например, каждое утро заправлять постель (без исключений) или каждый второй день не пользоваться лифтом, а подниматься по ступенькам. Или каждый вечер что-то писать в блоге (не важно о чем). Или учить по два html тега каждый день. Или знакомиться каждый день с новым человеком — кому что нравится.

Забудьте о списках и планах, просто отмечайте в пинарике это одно единственное действие.

Две недели подряд одни плюсы? Добавляйте еще что-то. Справляетесь с легкостью, не задумываясь? Добавляйте более сложные задания/привычки.

Только не торопитесь, воодушевление от первых успехов сразу попросит вас повесить на штангу вон те зеленые блины по 50 кг, которые используют Самые Большие Парни из спортивного зала, но не ведитесь на это. Добавляйте по 5 килограмм и молча работайте.

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

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

Метод очень старый, очень простой и очень полезный. Наверное ему очень много лет, но одним из самых старых источников этого метода для меня стала та часть биографии Бенджамина Франклина, в которой он описывал свой способ приобретения полезных привычек:

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

Подробное описание «Франклиновского дневника». Почитайте, там много полезного.

Постепенно, но постоянно.

Удачи :)

Update: заметил в комментариях негативную реакцию на календарик-пинарик.

Хабрачеловеки — не важно какой инструмент контроля вы используете (лично я пользуюсь эксель-табличкой), важно само его наличие. Очень трудно следить за каким-то регулярным событием, без ежедневного фиксирования результатов и сравнения отчетов. А улучшать что-то без такого — вообще невозможно.

Если вам не нравится слово пинарик, давайте заменим его на календарь-франклина, суть-то не изменится — это полезный и действительно работающий инструмент самоконтроля.

Как не обидеть человека, если он совершил ошибку?

Reading time1 min
Views5.1K
Добрый день, хабражители!

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

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

Обычно бывает так: «ну почему ты не уследил за подрядчиком, Иван?! Компания влетела на стоимость целого этапа, как это объяснять спонсору?». Правильно: «хороший менеджер всегда знает, что предпримет его подрядчик на следующем этапе и успеет перехватить инициативу в свои руки. Как считаешь, что нужно сделать, чтобы выровнять затраты на следующих этапах?».

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

20 лет Linux: краткая история

Reading time1 min
Views2.7K
Это видео, за три минуты покрывающее историю Linux, было создано Linux Foundation специально к двадцатилетнему юбилею ядра. Настроение видео явно схоже с недавними словами директора Linux Foundation.

Все о Лазерах

Reading time7 min
Views296K
Вы все любите лазеры. Я то знаю, я от них тащусь больше вашего. А если кто не любит – то он просто не видел танец сверкающих пылинок или как ослепи- тельный крошечный огонек прогрызает фанеру

А началось все со статьи из Юного техника за 91-й год о создании лазера на красителях – тогда повторить конструкцию для простого школьника было просто нереально… Сейчас к счастью с лазерами ситуация проще – их можно доставать из сломанной техники, их можно покупать готовые, их можно собирать из деталей… О наиболее приближенных к реальности лазерах и пойдет сегодня речь, а также о способах их применения. Но в первую очередь о безопасности и опасности.
Читать дальше →

Писать код с нуля или использовать существующую библиотеку?

Reading time3 min
Views6.2K
Сталкивались ли вы когда-нибудь с проблемой выбора: использовать существующую библиотеку или написать код самому? Я никогда не понимал этого вопроса и всегда отдавал предпочтение уже готовому решению. Однако недавно на работе опять возникла эта дилемма, мы как всегда немного поспорили, но на этот раз при принятии решения у меня все таки закрались сомнения. О плюсах и минусах каждого подхода читайте под катом.
Читать дальше →

Шифр Вижинера и его разгадка

Reading time3 min
Views81K
Сразу скажу, что этот топик интересен только с точки зрения истории криптографии, описываемый шифр малопригоден для защиты информации в современном мире. Но, тем не менее, алгоритмы, описываемые в топике, могут пригодится на специализированных олимпиадах.

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

Упрощенный алгоритм Бойера-Мура

Reading time3 min
Views58K
Прочитав статью об алгоритмах поиска подстроки в строке, я обнаружил, что там не рассказывается об алгоритме Бойера-Мура. Пара слов о нём всё-таки там есть, а именно, говорится, что алгоритм Бойера-Мура заслужил себе звание «алгоритма по умолчанию», потому что он в среднем дает лучшее время поиска (с чем я полностью согласен). Под катом рассказано об упрощенной версии этого алгоритма. В принципе, большинство скорее всего изучало этот алгоритм на 1-м или 2-м курсе ВУЗа (как и я), поэтому они могут пропустить эту статью, ничего нового тут нет.
Читать дальше →

Аккуратная настройка клавиатуры

Reading time4 min
Views31K
Вокруг нас появляется все больше людей, которые знают, чем дефис отличается от минуса, минус от тире, а знак дюйма от кавычек. Что там говорить, мне вчера секретарша прислала письмо, оформленное типографически точно. Для того, чтобы немного приблизиться к совершенству, не обязательно отягощать себя открытым окном «дополнительные символы» и унылым копипастом оттуда.
Большинство проблем в современных оконных менеджерах решается штатными средствами. Но что делать тем, кто хочет иметь возможность в одно нажатие набирать какие-нибудь экзотические символы, наподобие знака бесконечности (∞), интеграла (∫) или карточных мастей ()?
Под катом я расскажу и как настроить клавиатуру для правильной типографики («—») штатными средствами, и как расширить возможности до быстрого набора любых символов.
Поехали!

Как создать творческий коллектив? Советы от студии Pixar.

Reading time15 min
Views15K
Перевод нашел 4epT но так как кармы у него не хватает публикует от моего имени.

Эд Кэтмелл, один из создателей студии Pixar и нынешний Президент студий Pixar и Disney, рассказывает о принципах, которые позволили создать сплоченный коллектив, сформировать творческую атмосферу и справиться с экстремальными ситуациями.

Перевод: Александр Львов
Найдено тут

“Главный секрет создания популярных фильмов от студии Pixar заключается в правильном подходе к решению проблем внутри производства.”

Эд Кэтмелл

Несколько лет назад я разговаривал с главой одной из ведущих киностудий, который был убежден, что главная проблема состоит не в том, чтобы найти хороших людей, а в том, чтобы найти хорошие идеи. После этого разговора, я часто задавал представителям разным студий вопрос, что важнее — люди или идеи. К моему изумлению, примерно половина отвечала, что важнее идеи. С этим я в корне не согласен. Я думаю, такое мнение появилось из–за неправильного понимания творчества в целом. Важность идеи слишком сильно преувеличена в создании конечного продукта. И это приводит к непониманию, как в критических ситуациях управлять производством.
Читать дальше →

Нечёткий поиск в тексте и словаре

Reading time13 min
Views270K

Введение


Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
  • Расстояние Левенштейна
  • Расстояние Дамерау-Левенштейна
  • Алгоритм Bitap с модификациями от Wu и Manber
  • Алгоритм расширения выборки
  • Метод N-грамм
  • Хеширование по сигнатуре
  • BK-деревья
А также проведу сравнительное тестирование качества и производительности алгоритмов.
Читать дальше →

Динамика по подотрезкам: базовые вещи и «одна хорошо, а две лучше»

Reading time8 min
Views22K
Добрый вечер.
В этом посте я разберу задачу B «Дубы» с практического тура городской олимпиады школьников Санкт-Петербурга по информатике.
Задача эта на динамическое программирование по подотрезкам и идея решения интересна тем, что удобнее посчитать две динамики вместо одной. Если вас заинтересовало (незнание динамики не освобождает, но будет труднее) — добро пожаловать.
Читать дальше →

Рисуем многочлен Бернштейна для произвольного числа опорных точек

Reading time1 min
Views4.2K
Так собственно выглядит рабочая область:


Можно указать количество точек(от 2 до 13), и перетаскивать любую опорную точку наблюдая в реальном времени как меняется кривая.
Сделано для себя, с целью разобраться с кривыми разного порядка.
Базовые знания почерпнуты отсюда:

Многочлен_Бернштейна
Биномиальный_коэффициент

Можно также почитать про кривую Безье, которая является частным случаем многочлена Бернштейна.

Исходники прилагаются, в архиве также скомпиленный(Win_X86) exe'шник.

Архив с исходниками и exe'шником.
Зеркало
Доработка от Vordigont

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

Выпуск пиратской версии для повышения продаж на AppStore

Reading time1 min
Views1.3K
Уровень пиратского использования платных программ с AppStore у некоторых программ доходит до 70%. Но никто не замерял, насколько это увеличивает количество продаж. Разработчик игры Punch ‘Em! выложил статистику за период, когда в интернете появилась нелегальная версия его игры. Продажи выросли вдвое.



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

Генетический алгоритм на примере бота Robocode

Reading time13 min
Views47K


Когда писалась эта статья, хабрапоиск по словосочетанию «Генетический алгоритм» выдавал благородную пустоту. Однако недостаточный уровень *вырезано цензурой* отодвинул дату публикации, и вот только сейчас после позорного нудливого попрошайничества с моей стороны эта статья получила возможность показать себя миру. За этот промежуток времени успели выйти в свет как минимум три (столько мне на глаза попалось) статьи на подобную тему, и, вполне вероятно, что-то из написанного ниже вы прочитаете не впервые. Таким людям я предлагаю не хмурить носики от очередной попытки неопытного юнца научно-популярно объяснить ГА, а проходить к следующему экспонату ко второй части, где описывается создание на основе ГА бота для программистской игры Robocode. Это, по последним сведениям разведки, еще не встречалось на хабре.

Часть первая. Жизнь и творчество генетического алгоритма.


Начнем издалека. Есть некоторый набор задач, которые требуют решения. Наша цель — найти действия, которые смогут преобразовать Дано (начальные условия задач) в Ответ (целевое состояние).

Если ситуация простая, и решение такой задачи можно явно посчитать из условий при помощи этих ваших матанов, то и славно, тут и без наших премудростей все хорошо, нас наебали, все расходимся. Например, при решении квадратного уравнения ответ (значения x1, x2) получаются из начального условия (коэффициентов a, b, c) путем применения формулы, которую мы все учили в школе. А что делать в более печальном случае, когда нужной формулы в учебнике нету? Можно попробовать с помощью мозгового штурма решить одну из задач. Аналитически. Численными методами. Силой отчаянного перебора функций. Через некоторое время послышатся мечтательное студенческое «хоть бы оно само решилось». Ага, тут-то мы и вылезаем из-за занавесок. Итак, цель — написать программу, которая бы находила функцию (программу), получающую на вход исходные данные и возвращающую годные циферки. Сила метапрограммирования, в бой!

пучина невежества

Information

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