Pull to refresh
16
0

User

Send message

Вероятностный морфологический анализатор русского и украинского языков на PHP

Reading time3 min
Views3.7K
Перед каждым разработчиком сайтов рано или поздно становится вопрос о реализации поиска по сайту. Желательно чтобы поиск был по основе слова, т.е. не учитывал окончания слов. Для этой цели используются программы стеммеры, которые и выделяют из слова основу. Многие стеммеры работают на основе словаря, и вот чтобы не использовать огромные словари в небольших и средних проектах можно использовать вероятностный морфологический анализатор. Его отличительная особенность в относительно малом размере базы данных и соответственно в отсутствии нагрузки на базу. Без больших потерь в качестве выделения основы.

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

Заинтриговал?

150 человек: физиологическое ограничение на дружбу

Reading time1 min
Views5K
Возможно, развитие социальных сетей может когда-нибудь остановиться по естественным причинам. Робин Данбар (Robin Dunbar), профессор эволюционной антропологии из Оксфорда ещё в середине 90-х годов выдвинул теорию, что мозг человека не в состоянии удержать в сознании информацию более чем о 150 друзьях («число Данбара»).

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

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

#UKRTWEET январь 2010 — наследник #RETWEET09?

Reading time2 min
Views493
С новым Годом ХабраНарод!

Может и рано, но надеюсь, что вовремя 8)…

Немного предистории.

В 2009 году в России провели первый твитер баркемп retweet09(ru), который собрал множество учасников, и хоть я лично не присутствовал на нём — было интересно наблюдать за главными фразами в твитере баркемпа.(ru)

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

— при наличии 2000 друзей(фоловеров) добавление линка в твитер может собрать до 300 кликов в первые 20 минут. Пропорции в принципе работают — представляем сколько эффекта будет с пользователя в десятки тысяч фоловеров.
— мобильный твитер позволяет быть в курсе последних новостей без напряга по $$$ практически везде, где есть покрытие Вашего оператора. К слову, твитер, именно благодаря мобильным клиентам начал приносить прибыль создателям.
— наличие офлайн бизнеса и твитера при нём открывает новые возможности обратной связи с клиентами. С наиболее активными из клиентов.
— слежение за ключевыми словами в тви — хорошая возможность как улучшения своего собственного Я(товара, услуги, компании, авторитета). К примеру хабр я читаю только через тег #habr — так получается намного интересней.
— и не только

Не прошло и полгода, как в Украине заявлена попытка на проведение аналогичного #retweet мероприятия — #ukrtweet.
Конференция — баркемп.

image

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

PhpBrew. Менеджер версий PHP. (+ установка и использование в Ubuntu 13.10)

Reading time6 min
Views51K

Лирическое №1


PHP неуклонно взрослеет и обзаводится различными полезными дополнениями и некоторые из них уже ну совсем как у старших (хотя слово «младших» во многих случаях подойдет лучше).

В этом ключе стоит, например, вспомнить такие замечательные вещи как менеджер зависимостей composer, встроенный веб-сервер, появление namespace'ов и замыканий.

Сложилось так, что в качестве рабочей OS у меня установлена последняя версия Ubuntu (13.10). Долгое время я довольствовался последней стабильной версией PHP из репозиториев (видимо везло), но тут по работе пришел проект на 5.3 (а то и 5.2, но под 5.3 завелся), который никак не хотел стартовать на последней 5.5.3, что из официальных репозиториев и я было опечалился (уже имеется опыт установки неактуального PHP на Ubuntu, хоть и успешный, но весьма грустный), но потом вспомнил ruby и rvm.io и решил провести небольшое исследование. В итоге коллега подсказал озвученную в заголовке вещь.

Конец лирического. К фактам.

Если вкратце – единственное назначение phpbrew – возможность использовать разные версии PHP на одной машине. Быстро, просто, практически без танцев с народными музыкальными инструментами. (не продакшен, не параллельная работа, но мгновенное переключение между версиями при разработке).

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

Рабочее место Попкорн: Как стать Супер-продуктивным работая на себя

Reading time6 min
Views91K

Коллеги, представляю вам перевод статьи про Супер-продуктивность, которая меня сильно зацепила. Надеюсь, что перевод будет вам полезен для организации своего рабочего времени.

Я познакомился с этой идеей где-то на Hacker News несколько недель назад и адаптировал концепцию для моего собственного образа жизни, и это изменило мой подход к работе.

Супер-продуктивность — как начать работать больше, чем когда-либо
Читать дальше →

Почему стоит изучить Clojure?

Reading time17 min
Views150K

Что такое хороший язык программирования? Какими качествами и характеристиками он должен обладать? Ответ дать сложно. Вот одно из возможных определений: хороший ЯП должен хорошо решать возложенные на него задачи. Ведь ЯП — лишь инструмент в руках программиста. А инструмент обязан помогать нам в работе. В конце концов, это же и есть причина его создания. Разные ЯП стараются решать разные проблемы (с переменным успехом). Цель, которая ставилась при проектировании Clojure — сделать написанные нами программы простыми. И, как следствие, ускорить их создание, тестирование. А главное, уменьшить время на их понимание, изменение и сопровождение.
Читать дальше →

Как разрабатывать неподдерживаемое ПО

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

Я специализируюсь на отладке, исправлении, поддержке и расширении функциональности старого программного обеспечения. Мой типичный клиент имеет веб-сайт или приложение, которое более-менее работает, но автор которого недоступен. Бизнес-требования изменились, и ПО перестало им удовлетворять. Или у моего клиента есть что-то, что «уже закончено», но он расстался с разработчиком после исчерпания бюджета и сроков. Обычно такая ситуация сопровождается списком пропущенных фич и багов.
Мой типичный клиент обычно разговаривал с другими программистами, которые рекомендовали выбросить имеющееся и начать разработку с нуля. Большинство программистов не любит поддержку кода, и особенно, они не любят поддержку чужого кода.
Читать дальше →

Делаем «mindmap» на Javascript с локальным хранением в базе данных браузера

Reading time25 min
Views56K

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

Я опишу особенности создания редактора карты памяти, который использует базу данных браузера. Причём, это будет не LocalStorage, который не может превышать 5 мегабайт. Объём данных сможет превысить 100-200 мегабайт, так как используется IndexedDB или webSQL, смотря что доступно в конкретном браузере.

Исходники выложены в открытый доступ на Github.

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

Секрет минимализма в том, что мы будем использовать проверенные в бою плагины:
  1. Ydn.db — хранение информации в базе данных браузера с автоматическим выбором лучшего метода и единым API
  2. jQuery context menu — контекстное меню, которое можно наполнять динамически при помощи Javascript
  3. jsPlumb — расширение позволяющее рисовать линии между HTML элементами
  4. jQuery UI — Drag&drop — перетаскивание элементов между собой


PS: Также мы научимся создавать «синглтон», облегчать себе асинхронное программирование при помощи jQuery и встроенного объекта $.Deferred(), а также при помощи плагина LiveReload, сохраним краску на клавише F5 при изменении свойств CSS и кода в HTML и Javascript.
Читать дальше →

Да, но кто сказал, что они купят это?

Reading time5 min
Views82K
Продолжение перевода серии статей «5 уроков просмотра стартапов»,
прошлая статья Настоящие нечестные конкурентные преимущества


На сотнях стартап питчей в Capital Factory, не нашелся и десяток людей, которые были бы готовы сказать «если вы создадите этот продукт, я дам вам X долларов».



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

Недальновидно, не правда ли?
Читать дальше →

Когда-то я говорил…

Reading time2 min
Views173K
Когда-то я* говорил, что без идеального задокументированного кода с многоуровневой плагинной архитектурой заказчик будет мучиться в конвульсиях каждый раз, когда его пальцы будут соприкасаться с клавиатурой. Теперь я заказчик и понимаю, что мне нафиг не нужен идеальный код, депенденси инджекшены и два синьора по цене одного. Главное, чтобы работало и было сделано в срок. И желательно бесплатно.

Когда-то я говорил, что к собеседованию должен готовиться не только соискатель, но и интервьювер. Теперь я сам провожу собеседования, но после десятого интервью все соискатели выглядят как китайцы – одинаково.

Когда-то я говорил, что опаздывать на встречи могут только пид$расы. Теперь я сам часто опаздываю на встречи, но в то же время не сплю с мужиками.

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

Tsung: Нагрузочное тестирование Web-приложений

Reading time3 min
Views42K

Tsung — это распределенная система нагрузочного тестирования, написанная на Erlang'е. Заявлена поддержка HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and XMPP/Jabber. В этой статье я опишу как протестировать обычный web сайт на нагрузку.
Читать дальше

Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

Reading time7 min
Views67K
Здравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).

Способ реализация

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

Область применения

Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

SEO под DDoS-ом

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

Стоимость и эффективность

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

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Reading time16 min
Views40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...

Освобождаемся от целей

Reading time3 min
Views2.5K
Продолжаю серию переводов статей о минимализме от Лео Бабауты.

«Когда мы не переживаем о происходящем, все встает на свои места. Мир принадлежит тем, кто не переживает. Если же напрягаться, то завоевать мир не удастся.» — Лао Цзы.

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

И на этом основаны другие убеждения:
  • Вы должны ставить правильные цели (например, по SMART).
  • Вы должны разбивать цели на выполнимые действия.
  • Вы должны ставить сроки и временные рамки.
  • Вы должны сосредоточиться на целях в течении дня.

Я знаю это, потому что это то, во что я верил, чем жил и о чем писал долгое время.

До недавнего времени.

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

Drupal ностальгия

Reading time2 min
Views679
Знаете ли вы, что согласно историческим данным — ностальгия считалась болезнью?
С момента появления термина ностальгия в 1688 году(wikipedia), прошло немало времени и теперь понятие и чувство немного переосмыслено нами.

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

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

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

И это можно назвать словом «круто».

Drupal Camp Kyiv
Киев…
2008 год…
31 августа…
Около 50 учасников собрались в помещении G-club, чтобы познакомиться и обговорить общую тему.
Я там был, Было круто и тепло, но определенно мало!
В последствии, через несколько недель было создано сообщество переводчиков, которые общими усилиями дали понять миру, что само «сообщество» — существует.
Читать дальше →

Прокачка ASUS WL 500G Premium

Reading time5 min
Views57K
   На Хабре уже было пару статей, о весьма неплохом роутере WL 500G Premium от ASUS.
   В устройстве заложен неплохой потенциал – довольно шустрый процессор BCM4704 фирмы Broadcom, 32 Мб оперативной памяти, наличие двух портов USB (хоть и с не высокой пропускной способностью). Подкачал Wi-Fi модуль, предел которого составляет 54Mbps при использовании 802.11g. Но для ноутбука, нетбука, коммуникатора и других мобильных устройств вполне достаточно.



   Данная начинка просто требовала более правильного использования, чем этого хотели программисты ASUS. Посему были созданы как модификации родной прошивки (прошивка от Oleg`a oleg.wl500g.info), так и полностью новые проекты (DD-WRT www.dd-wrt.com).
   Весьма востребованной оказалась возможность подключения внешнего жесткого диска по USB интерфейсу и установка торрент-клиента (Transmission, rtorrent), что бы разгрузить большого брата и спать ночью в полной тишине.
   Все эти операции были проделаны (об этом можно будет написать еще одну статью) и был получен своеобразный сидбокс, который весьма хорошо справлялся со своими обязанностями.

Пока...

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity