Здравствуйте, уважаемое сообщество! Недавно на Хабре проскакивала неплохая обзорная статья о разных алгоритмах поиска подстроки в строке. К сожалению, там отсутствовали подробные описания каких либо из упомянутых алгоритмов. Я решил восполнить данный пробел и описать хотя бы парочку тех, которые потенциально можно запомнить. Те, кто еще помнит курс алгоритмов из института, не найдут, видимо, ничего нового для себя.
kSx @kSx
User
Создание новой виртуальной машины за одну минуту или «vagrant up!»
3 min
85K
Те, кто раньше сталкивался с созданием виртуальных машин, представляют себе процесс и могут оценить его по времени. Нужно создать саму виртуальную машину, указать для неё необходимые параметры (размер и тип диска, количество оперативной памяти), после этого подключить установочный диск с операционной системой (будь то настоящий оптический привод или образ ISO), дождаться загрузки, запустить установку, дождаться её завершения, отключить установочный диск и перезагрузиться. На всё это может уйти около 20 минут — в каких-то случаях меньше, в каких-то больше, но всё равно это много времени. А если виртуальная машина по каким-то причинам будет удалена, то всё это придётся делать заново.
Vagrant — способ значительно упростить и убыстрить создание новых виртуальных машин. Вместо установочного диска используется специальный box-файл, который автоматически разворачивается в новое виртуальное окружение. После этого с сетевого интерфейса виртуальной машины могут быть перенаправлены порты, может быть выделен IP-адрес, может быть установлено и настроено необходимое ПО. Всё это указывается настройках Vagrant, которые подробно описаны в документации.
Vagrant работает в Linux, Mac OS X, Solaris и Windows.
+20
Очень много полезных штук для AS3 #2
9 min
46KВ продолжении статьи о полезных штуках для AS3, сегодня мы поговорим о 2D физических движках, библиотеках для работы со звуком, системах для работы с частицами, наборах для загрузки данных, ООП фреймворках, фреймворках для разработки сайтов, а так же о куче других полезных библиотек/фреймворках/классах, чьё назначение не вписалось не в одну из категорий.
+33
Rails: Хватит отмазываться, начинаем BDD-ить!
9 min
32KКто здесь?
Когда речь заходит о тестировании существующего продукта, а тем более о разработке чего-то нового на основе изначального написания сценариев использования, различных спецификаций и тестов, то частенько можно слышать подобные вещи:
11:24:21 PM Michael: ну хз, надо пробовать 11:24:24 PM Michael: наверное так лучше 11:24:27 PM Michael: даже я думаю наверняка 11:24:36 PM Michael: но пока меня че-то останавливает 11:24:38 PM Michael: лень наверное :)
Знакомо? «Не хочется разбираться? Нет времени?» Тогда читаем дальше. В статье расскажу, как настроить свое любимое рельсовое окружении на разработку с подходом BDD и начать новую жизнь (опционально).
+66
Настоящий веб-сайт на Common Lisp за 9 шагов
7 min
12KВведение

Эта вводная статья предназначена для желающих попробовать применить Common Lisp в задачах веб-программирования. Я не буду останавливаться на преимуществах этого языка, за меня это сделал ababo в своем вводном посте Разработка web-приложений на языке Common Lisp (часть первая)
Я занимаюсь вопросами разработки веб-приложений на Common Lisp немногим более года и сделал на Common Lisp крупный интернет-магазин, что, как мне кажется, предупредит возражения тех, кто считает, что лисп бесполезен для коммерческого применения.
Сегодня моя задача — рассказать в подробностях о применяемом мной способе развертывания всей необходимой инфраструктуры. Используя эту статью как пошаговое руководство внимательный читатель сможет развернуть свой собственный сайт на лиспе.
Возможно мои подходы не идеальны — в таком случае я буду рад конструктивной критике — пожалуйста, не стесняйтесь если вам что-то не нравится — одной из целей написания этой статьи было исправление собственных ошибок.
Для тех, кто любит проматывать скучные процедуры установки — в конце статьи размещена небольшая вкусность, которая, возможно, расширит ваш взгляд на веб-программирование, если до этого момента вы не имели дела с лиспом. Ищите по ключевым словам SLIME и SWANK :)
+56
Видеохостинг своими руками
6 min
71KЭта статья о некоторых технических аспектах реализации бесплатного сервиса для загрузки, хранения и просмотра видео. Будут рассмотрены вопросы настройки серверного программного обеспечения, даны примеры команд для конвертации видео и примеры кода на языке PHP.
+126
PHP и Dropbox. Удаленное хранилище пользовательских файлов
3 min
15KПрименение
Довольно часто при разработке веб-приложений приходится задумываться над вопросом организации стабильного хранилища пользовательских файлов. И если при этом мы ограничены дисковым пространством, то создание обмена файлами средней тяжести, да еще и с резервным копированием оных, сильно нас озадачивает.
Решение
В качестве решения я предлагаю схему PHP<->Dropbox. Dropbox нам интересен тем, что каждому новому пользователю выделяеся 2Gb виртуального дискового пространства, а так же возможность отката на предыдущие версии файлов. Это обеспечивает нам стабильное хранилище, в котором не возникнет случаев безвозвратно удаленных файлов.
+70
Готовим рыбу Фугу дома или OpenBSD на домашнем сервере
10 min
19K
Конечно же речь пойдет не о приготовлении всем известного японского деликатеса. А пойдет она о настройке нескольких сервисов, которые я определил для
себя как необходимые, на домашнем сервере. В качестве операционной системы которого будет выступать OpenBSD.
Многие воскликнут, а зачем тебе эта малоизвестная ОС, ведь есть же Linux, FreeBSD. Да, действительно, я мог бы настроить все необходимое и на других
unix like, но это бы не принесло мне столько удовольствия, сколько я испытал изучая и настраивая OpenBSD. Да и потом, меня всегда привлекают сложные
и нестандартные решения.
Закончим с вступлением и вернемся к теме заголовка.
Спешу представить тебе меню, уважаемый читатель.
+47
Латентно-семантический анализ
4 min
100KКак находить тексты похожие по смыслу? Какие есть алгоритмы для поиска текстов одной тематики? – Вопросы регулярно возникающие на различных программистских форумах. Сегодня я расскажу об одном из подходов, которым активно пользуются поисковые гиганты и который звучит чем-то вроде мантры для SEO aka поисковых оптимизаторов. Этот подход называет латентно-семантический анализ (LSA), он же латентно-семантическое индексирование (LSI)

+98
Построение систем доставки видео на основе HTTP Dynamic Streaming от Adobe и OpenSource
8 min
21KВ рамках проекта для одного из наших заказчиков в очередной раз встала задача построить систему конвертации/ хранения/ доставки видео в интернет. Типичная такая задача создания своего маленького (или не очень маленького) “Тьюба” только с профессиональным, а не UGC-контентом.
С момента создания первых “Тьюбов” технологии видео в интернете прошли некоторый путь развития, позволяют сейчас делать намного больше, да и требования к современному видео-сайту стали несколько иными.
Наиболее интересными трендами последнего времени, на наш взгляд, являются:
С момента создания первых “Тьюбов” технологии видео в интернете прошли некоторый путь развития, позволяют сейчас делать намного больше, да и требования к современному видео-сайту стали несколько иными.
Наиболее интересными трендами последнего времени, на наш взгляд, являются:
- возможность смотреть один видео-сайт с разных устройств,
- технология адаптивного HTTP стриминга
+51
Анализ проникновения бота через эксплоит в старых версиях phpmyadmin и рекомендации по настройкам безопасности php-хостинга
11 min
13KИмею на администрировании несколько серверов, на которых хостятся восновном свои проекты, но кроме них ещё довольно много пришлось разместить левых сайтов — клиентов, знакомых, знакомых знакомых и т.п. За время администрирования встречались разные проблемы, поэтому настроены кое-какие мониторинги (zabbix и самописные скрипты).
И вот вчера на одном из серверов скрипт, проверяющий активные соединения, забил тревогу: постоянно висит исходящее соединение на неизвестный хост на порт 433, уже более 9 часов на момент когда я осилил прочитать почту в понедельник утром ;)
При беглом просмотре кроме этого активного соединения больше никаких аномалий и левых процессов в системе не было обнаружено, резкого роста трафика на интерфейсе тоже не обнаружено, но это меня не успокоило, поэтому пришлось выяснять подробнее.
По результатам анализа я выяснил что подобная дыра в безопасности может быть на большинстве серверов с базовыми настройками PHP, поэтому решил сделать пост на хабре чтобы обезопасить остальных владельцев серверов с хостингом от подобных случаев, а также описал способы поиска источников попадания заразы на сервер.
И вот вчера на одном из серверов скрипт, проверяющий активные соединения, забил тревогу: постоянно висит исходящее соединение на неизвестный хост на порт 433, уже более 9 часов на момент когда я осилил прочитать почту в понедельник утром ;)
При беглом просмотре кроме этого активного соединения больше никаких аномалий и левых процессов в системе не было обнаружено, резкого роста трафика на интерфейсе тоже не обнаружено, но это меня не успокоило, поэтому пришлось выяснять подробнее.
По результатам анализа я выяснил что подобная дыра в безопасности может быть на большинстве серверов с базовыми настройками PHP, поэтому решил сделать пост на хабре чтобы обезопасить остальных владельцев серверов с хостингом от подобных случаев, а также описал способы поиска источников попадания заразы на сервер.
+120
Проверяем отказоустойчивость сайта
4 min
36K
Итак, поехали.
+52
Функциональное тестирование веб-приложений без боли
5 min
37KИногда в жизни бывает так — вот ждёшь, ждёшь чего-то, изучаешь теорию по данному вопросу, рассматриваешь разные подходы к решению, дискутируешь с такими же ищущими как ты, внимаешь гласу признанных гуру, но не продвигаешься дальше ни на дюйм. Потом бросаешь, забываешь вообще об этом вопросе, занимаешься другими делами, и вдруг — на тебе, всё встало на свои места, из разрозненных элементов сложилась чудесная мозаика, нагрянуло просветление, а волосы вдруг стали густыми и шелковистыми.
+32
Повышение производительности за счет блочного кеширования
5 min
5.7KТема блочного кеширования и ssi не раз проскакивала на Хабре. Ниже я представлю еще одну реализацию, использующего блочное кеширование, а также исходники фреймворка, использующего эти принципы, которые можно найти тут. А как это работает — прочитать ниже.


+42
Бесплатный VPN от Amazon
2 min
125KПод хабракатом я расскажу вам, как при помощи нескольких простых действий получить себе практически бесплатный VPN в штатах:
+230
Как начать работу над стартапом?
6 min
14KТопик навеян впечатлениями от докладов на swpiter и постом о том, как не продать машину :)

Суть в чём, есть некая порция работы, которую нужно сделать перед тем, как начинать тратить свои деньги. Я попытался описать последовательность этих действий.
Картинка слева кликабельна, а ниже — текстовое описание в 12 шагах как инициировать стартап и при этом всегда оставаться в выигрыше.
И так, всё начинается с идеи, которая каким-то образом пришла к вам в голову. Идея выглядит интересной и соблазнительной. Она мотивирует вас.
Самое важное в идее — это не терять мотивацию вплоть до 10 шага и тогда вы в любом случае получите для себя выгоду.
Необходимо хотя бы примерно ответить на эти вопросы:

Как работать над стартапом и всегда оставаться в выигрыше?
Суть в чём, есть некая порция работы, которую нужно сделать перед тем, как начинать тратить свои деньги. Я попытался описать последовательность этих действий.
Картинка слева кликабельна, а ниже — текстовое описание в 12 шагах как инициировать стартап и при этом всегда оставаться в выигрыше.
1. Идея!
И так, всё начинается с идеи, которая каким-то образом пришла к вам в голову. Идея выглядит интересной и соблазнительной. Она мотивирует вас.
Самое важное в идее — это не терять мотивацию вплоть до 10 шага и тогда вы в любом случае получите для себя выгоду.
2. Детализация идеи
Необходимо хотя бы примерно ответить на эти вопросы:
- область применения
- какие задачи поможет решить
- какие инструменты применяются для решения задач
- что вы хотите получить в процессе и в результате реализации
- какие-то существенные моменты, которые вам просто необходимо изложить, чтобы не потерять в будущем
- сколько времени вы можете уделить (если идея вас реально интересует, вы перейдёте к следующим этапам)
- сколько на это нужно денег
- кто вам ещё нужен для реализации идеи
+113
Анаглифная 3D-фотография своими руками
1 min
12KДорогие хабражители и хабрагости, хочу поделиться с вами своим новым увлечением — 3D-фотографией.
Нет, я не являюсь владельцем 3D-говномыльницы, у меня обычная зеркалка от Sony и далее в этой статье я расскажу о том, как сделать вот такую анаглифную фотографию без специальной техники и за 5 минут времени:

Нет, я не являюсь владельцем 3D-говномыльницы, у меня обычная зеркалка от Sony и далее в этой статье я расскажу о том, как сделать вот такую анаглифную фотографию без специальной техники и за 5 минут времени:

+95
Настоящее скругление углов картинок на клиенте
3 min
27KО скруглении углов в html-верстке сказано уже столько, что я пойму тех кто прочитав заголовок иронично улыбнется и подумает «опять 25, ну сколько можно...». Поэтому я постараюсь кратко изложить суть, и сразу предупрежу, что этот метод вы едва ли могли видеть раньше.
+125
«Что желаете на гарнир к тестам?»
4 min
1.7KTranslation
Так получилось, что завершение перевода этой статьи Майкла Болтона удачно совпало с появлением на хабре заметки Натальи Руколь «Почему тестирование — это тупо и скучно?», которая вызвала достаточно бурное обсуждение. Эта статья призвана в какой-то степени объяснить, почему одним тестирование кажется скучным, а для других людей это самое интересное занятие в мире.
Когда мне было лет двадцать с небольшим, я решил быстро научиться вкусно готовить. Нашел книгу «Гурман за 60 минут» Пьера Фрейни, и пошел читать.
Выяснилось, что мистер Фрейни описывал не технику, а свою философию приготовления еды.
Каждый рецепт начинался с такого захватывающего вступления, что меня больше увлекали истории мистера Фрейни и его знания о блюде, чем готовка. Прочитав всего лишь несколько страниц, я уже выучил массу новых вещей. А вскоре я даже начал распознавать некоторые шаблоны.
Эти истории научили меня намного большему, чем сами рецепты. Рецепты уделяли основное внимание технике, а истории учили навыкам и заставляли меня думать.
Когда мне было лет двадцать с небольшим, я решил быстро научиться вкусно готовить. Нашел книгу «Гурман за 60 минут» Пьера Фрейни, и пошел читать.
Выяснилось, что мистер Фрейни описывал не технику, а свою философию приготовления еды.
Каждый рецепт начинался с такого захватывающего вступления, что меня больше увлекали истории мистера Фрейни и его знания о блюде, чем готовка. Прочитав всего лишь несколько страниц, я уже выучил массу новых вещей. А вскоре я даже начал распознавать некоторые шаблоны.
Эти истории научили меня намного большему, чем сами рецепты. Рецепты уделяли основное внимание технике, а истории учили навыкам и заставляли меня думать.
+31
История развития и оптимизаций одного высоконагруженного ресурса
5 min
14K
Введение
Все началось с того, что я стал системным администратором у одного провинциального Интернет-провайдера. Помимо администрирования различного рода ресурсов, мне в присмотр достался один молодой, но бурно развивающийся ресурс. Ресурс представлял из себя классический LAMP проект. Сайт, на котором генераторами контента являлись обычные пользователи.
* К слову, в то время я ничего не понимал в *nix системах, хоть и все сервера которые мне достались, были именно на нем, разбирался я во всем этом достаточно быстро.
Как обычно бывает с ресурсами, набирающими популярность, железки на которых все крутится, перестают справляться. Ресурс стоял на стареньком двухпроцессорном сервере, на котором крутились практически все сервисы для пользователей. В то время начальство не воспринимало ресурс как нечто стоящее вложений, поэтому, к моему сожалению (а позже – счастью), денег под новую железку мне не выделяли.
+188
Information
- Rating
- Does not participate
- Registered
- Activity