Pull to refresh
0
voland_2003 @voland_2003read⁠-⁠only

User

Send message

Максимальный поток минимальной стоимости

Reading time15 min
Views86K
Транспортная задача (классическая) — задача об оптимальном плане перевозок товара со складов в пункты потребления на транспортных средствах.

Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку).

Под катом очень-очень много текста, т.к. рассказывается один из вариантов решения данной задачи «в картинках» для тех, кто мало знаком с графами. Листинг прилагается.

Путешествие в тысячу миль начинается с первого шага

Учебник по языку программирования Python (хабраиндекс)

Reading time1 min
Views314K

Серия статей «Основы Python»


I, Начало
II, Строки
III, Списки, кортежи, файлы
IV, Генераторы списков
V, Определение функций, основы
VI, Расширенное определение функций

Об основах языка Python в сжатой форме

Продвинутый уровень


Сила и красота декораторов Короткий экскурс в метапрограммирование.
Итерируем все и вся Специфика циклов в Питоне.
Как я учился работать с XML
Консервация объектов в Python Использование модуля Pickle.
Memoization в Python Оптимизация работы программ.
Простейшее рисование с помощью PIL
Regexp и Python: извлечение токенов из текста
Как писать маленькие приложения на python с графическим интерфейсом (библиотека Qt).

http://netsago.org/ru/docs/1/12/
Одеваем скрипты Python с помощью EasyGui (добавляем простой диалоговый интерфейс)

http://djbook.ru/
Учебник по Django (Python-фреймворк для веб-приложений)

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

Мне кажется, я начал понимать, что ты имела в виду!

Reading time7 min
Views33K
Опечататься дело нехитрое; опечататься в поисковом запросе так и вдвойне. Почитай все большие веб-поисковики сегодня умеют корректировать ошибки в ключевых словах во-1х и подсказывать запросы во-2х; вслед за ними того же хочется поискам поменьше. Обе штуки можно ловко реализовать при помощи открытого поисковика по кличке Sphinx; в этом посте расскажу, как конкретно.

Ну, за did you mean («что ты имела в виду») и прочий query completion («уж не Васю ли ты ищешь»).
Читать дальше →

Блокировка ботов и нежелательных пользователей на уровне вебсервера nginx

Reading time2 min
Views24K
У меня, да и думаю у вас, логи веб-сервера частенько забиваются запросами вида:

62.193.233.148 - - [28/May/2009:18:20:27 +0600] "GET /roundcube/ HTTP/1.0" 404 208 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
62.193.233.148 - - [28/May/2009:18:20:28 +0600] "GET /webmail/ HTTP/1.0" 404 206 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /admin/main.php HTTP/1.0" 404 212 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /phpmyadmin/main.php HTTP/1.0" 404 217 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:12 +0600] "GET /phpMyAdmin/main.php HTTP/1.0" 404 217 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:13 +0600] "GET /db/main.php HTTP/1.0" 404 209 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:13 +0600] "GET /PMA/main.php HTTP/1.0" 404 210 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:14 +0600] "GET /admin/main.php HTTP/1.0" 404 212 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:14 +0600] "GET /mysql/main.php HTTP/1.0" 404 212 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:15 +0600] "GET /myadmin/main.php HTTP/1.0" 404 214 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:15 +0600] "GET /phpadmin/main.php HTTP/1.0" 404 215 "-" "-"
212.150.123.234 - - [29/May/2009:20:51:16 +0600] "GET /webadmin/main.php HTTP/1.0" 404 215 "-" "-"


В основном это боты, бывают и пользователи, которые сканируют сервер на наличие всяких папок, ищут уязвимости.
Так вот захотелось блокировать эти IP-адреса сразу после попытки сканирования сервера, средствами nginx.

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

Memcached — стратегия кеширования

Reading time6 min
Views18K
Хочу поприветствовать хабросообщество. Из приятных впечатлении при регистрации на Хабре — так это атмосфера сказочности, которая бывает только в старых добрых сказках из советского Кинофильма.
Итак, слезы умиления прошли, приступаем. Ниже топик, который привел к инвайту на Хабр.

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

Жесты мышью в Linux

Reading time1 min
Views3.5K

Навеяно оперой.


Меня так вдохновила идея с жестами мышью что я решил поискать нечто подобное для ОС Linux. Нашел быстро. В репозитарии Archlinux оказалась утилита easystroke.

Там есть интуитивно понятный интерфейс с огромными возможностями.

Image downloaded service ITmages

Значит что можно. Можно нажать кнопочку Add Application выбрать приложение и затем команду на него. Или просто для всего рабочего окружения. Вот какие возможности можно делать с жестами:
  • Command (Выполнить команду)
  • Key (Имитация нажатия клавиш)
  • Text
  • Scroll
  • Ignore
  • Button
  • Misc (разные опции. Свернуть и т.д.)

То что не перевел сам еще не понял для чего.

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

Если кто-то это прочитает, не пинайте. Это мой первый хабрапост поэтому все так «просто» и не очень много информации.

Как открыть интернет-магазин с голой жопой

Reading time3 min
Views6.5K
Последнее время часто слышу жалобы, что нет юрлица, а значит ничего сделать нельзя, ибо непреодолимый страх, что «придут злые опера и закроют за незаконную предпринимательскую деятельность».

Не буду растекаться по древу насчет «до 5-7 тыс. у.е. в месяц в качестве физлица вы никому в упор не интересны».

Допустим без юрлица ну никак нельзя, да еще и на сайт с рекламой денег нет.  Что делать? 

По шагам:
1. Изучаете товары (Я.Маркет, запросы в Директ, ближайший рынок) на предмет «что бы такого не слишком приевшегося и конкурентного, но при этом простого в доставке, и чтобы геморроя с гарантиями/лицензиями поменьше.
Хинт: сувениры, игрушки, коллекционеры всех мастей. Берете одну/несколько специфических ниш для отработки.
Не надо брать строительство, окна, бытовую технику/электронику. Там, где кокурентов дофига.

2. Идем на ближайший рынок, торговый комплекс, а лучше отраслевую выставку(там народ крупнее и плотнее).

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

Как легко сделать календарь и часы для ввода даты и времени на форму

Reading time2 min
Views10K
а точнее использовать уже имеющиеся в Django (те что по-уполчанию есть в интерфейсе администрирования)…

недавно встала такая задача - гугл не помог, поэтому решил написать как это реализовал я

Flex3. Сокетные соединения (Socket connections) Часть 1

Reading time3 min
Views6.7K
Раньше здесь была другая статья, но я её случайно затёр. Приношу свои извинения тем кто попал на эту страницу в надежде найти здесь информацию по JQuery Dialog. Хотя, если копия не сохранилась в сети… Значит статья была так себе :)

Хочу предложить всем желающим мой перевод документа из официальной документации по Adobe Flex 3 — Socket connections (Сокетные соединения)

Вторая часть здесь Flex3. Сокетные соединения (Socket connections) Часть 2
Читать дальше →

Мыслекарты для планирования трат

Reading time4 min
Views3.6K
Инструмент Mind Map довольно нов: настолько, что у него нет даже устоявшегося русского названия. Обычно его называют интеллект-картами, картами памяти, сознания или мозга, и даже ментальными картами. Как по мне, довольно громоздкие и не удобные имена, в которых, что самое главное, не четко передается суть понятия (мне в них слышатся какие-то анатомические оттенки: вот тут левое полушарие, тут правое, а тут мозжечок… :) А ведь это, если максимально упростить, картинки, изображащие понятия и логические связи между ними. Можно было бы сказать карты понятий, но тоже звучит громоздко, а вот карты мыслей — проще. Ну и, следуя по традиции словообразования в русском языке: мыслекарты![1]

Мыслекарты помогают лучше осознать какие-то сложные и/или состоящие из многих компонентов системы за счет подключения визуального канала восприятия и, соответственно, образного мышления. Говорят, что в среднем человек может удерживать в оперативной памяти лишь 7 отдельных объектов. Но это в том случае, если эти объекты слабо связаны в сознании друг с другом. А вот, если добавить ассоциации, то потенциальные возможности работы с ними в уме и запоминания неимоверно расширяются. В книге «Основы практики на пианино» утверждается, что именно на этом построены методы людей, практикующих фотографическую память…

Но я отвлекся. При чем мыслекарты к личным финансам? Не считая, конечно, того, что оба эти явления как-то касаются темы личного развития :), связь нам подсказал один из пользователей нашего сервиса по учету финансов[2]. А что если применить эти карты к планированию трат на ближайшее будущее? Например, можно задумать траты, которые могут потенциально выйти за рамки семейного бюджета, но чтобы это понять, нужно посидеть с карандашом и блокнотом и прикинуть свои будущие расходы и доходы, добавить ингридиенты сбережений и незапланированных трат, и щепотку везения, а на выходе получить прогноз, удастся ли осуществить запланированное. В общем-то, в этом может неплохо помочь учетная система: ведь в ней есть уже почти вся нужная информация. Другой вопрос, что ее нужно показать так, чтобы человек не утонул в этом океане цифр. Вот тут на помощь и приходит наглядность и простота мыслекарт. Но, как говорится, «лучше один раз увидеть, чем сто раз услышать», поэтому попробую показать, что имеется в виду.

немного конкретики

Наследство выпускника, или Последнее д/з по информатике

Reading time2 min
Views1.7K
Фрагмент Очередной выпуск, очередной «Последний звонок». Очередная партия юношей и девушек принимает на себя статус «вступивших во взрослую жизнь» и расстается со своим учебным заведением.

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

Об этом и расскажу.

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

AdMe.ru: Тэги, полнотекстовый поиск и всё такое…

Reading time9 min
Views7.6K
В этой статье я открою секреты того, как работает adme.ru, а именно я расскажу о том как устроено хранение статей и тэгов, как работает полнотекстовый поиск, поиск по тэгам и всё такое…

В статье приведён пример структуры таблиц, рабочий конфиг Sphinx и немного php кода с примерами выборок.
Читать дальше →

Первый миллион всегда самый трудный

Reading time2 min
Views1.5K


Мы рады объявить о том, что менее чем за год после окончания закрытого бета-тестирования у Evernote уже более одного миллиона зарегистрированных пользователей! Это очень много. Это, например, население целого Челябинска или Ростова-на-Дону и даже целых стран, таких как Катар, Кипр или Черногория. Только подумайте: если все пользователи Evernote встанут в ряд, это будет очередь из миллиона человек!

График роста:

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

Фильтр для типографики

Reading time2 min
Views1.4K
Недавно Игорь Кононученко выложил версию типографа, написанного на Питоне. Игорю большое человеческое спасибо. А я скромно решил сделать из библиотеки типографический фильтр для django. Не то, чтобы это сложно — но новичкам, вроде меня, может пригодиться. Что, собственно, получилось.
Читать дальше →

Автоматическая привязка URL к view

Reading time2 min
Views2K
Я недавно «подсел» на Django и мне очень нравится этот фреймворк. Однако есть деталь, которая доставляет беспокойство. Это одновременное редактирование файла с моими views и файла urls.py при создании нового view. Я понимаю, что это связано с тем, что URL-ы и views вещи достаточно разные и для большей модульности лучше держать их раздельно, однако для небольших проектов было бы очень удобно иметь возможность править view и его настройки в одном месте.

Здесь я предлагаю такое решение, конечно же, завязанное на декораторах.

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

Разные варианты отображения для одних и тех же данных

Reading time2 min
Views1.5K
Опыт «забавностей» становится всё больше и больше. Вот очередной случай маразма. Коротко суть:
Существует сайт, на котором нужно выводить одни и те же объекты с разными условиями выборки (по категории, по тегу, «захабареные» и т.п.) и разными отображениями (список, подробно и т.п.).

Некоторые индивиды, создают в каждом view замысловатую структуру из if-ов, и каждый раз она повторяется. Запомните:
  1. Рефакторинг
  2. Рефакторинг
  3. Рефакторинг
  4. view — это просто функция!

И так, по последнему пункту.
Читать дальше →

Конфигурация. dev vs production

Reading time2 min
Views2K
Не думаю, что данный топик должен стать откровением для продвинутых Django-кодеров. Но по опыту работы в разных проектах, могу сказать, что многие программисты всёже не в теме.

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

Некоторые вставляют кучу if-ов или ещё чего по хуже, опираясь на ip (ужос) или имя машины, но это всё крайне неудобно и захламляет конфигурацию. Для меня это очень сильный довод к неучастию в проекте, т.к. это говорит о качестве всего кода.
Читать дальше →

django-voting сортировка по рейтингу

Reading time2 min
Views2.2K
Думаю, многие знакомы с этим расширением, но всё же:
django-voting позволяет ввести оценку любой сущности по digg-принципу (+1/-1) максимум за 30 минут (с учётом включения асинхронных запросов JS).
Сайт проекта: django-voting.googlecode.com
Но есть одна плохая особенность: отсутствие возможности сортировать сущности по рейтингу стандартными средствами ORM. Далее опишу как это реализовал я.
Читать дальше →

StaticGenerator Pro

Reading time3 min
Views1.5K
Jared Kuolt создал небольшой скрипт кэширования для Django. Всем замечателен: и простотой и размером.

Но у скрипта StaticGenerator и nginx-конфига, приведенного Jared-ом, есть недостатки:
1) актуально только для сайтов без регистрации;
2) работа с ссылками только простого вида;
3) генерация только при изменении/добавлении контента и/или комментариев.

Я исправил эти недочеты, добавил кое-что интересное в скрипт, и получился StaticGenerator Pro.
Читать дальше →

Сказ про то, как я свой интернет-магазин открывал: день рождениZ

Reading time2 min
Views1.3K
Было это три года назад. День рождения бизнеса 12 апреля 2006 года.

Два юных студента киевского политехнического института решили открыть интернет-магазин парфюмерии. Не ИНТЕРНЕТ-МАГАЗИН, а интернет-магазин ПАРФЮМЕРИИ. Чувствуете разницу?)

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

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

Мы тогда еще не думали об интернет-магазине и вообще о таких вещах, как интернет-коммерция, практически не подозревали.

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

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

“Друг мой, а давай-ка откроем интернет-магазин?”,- сказал я как-то своему нынешнему партнеру за бокалом пива. И 12 апреля был зарегистрирован домен elitparfum.com.ua.

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

И здесь нас поджидала первая ошибка… продолжение следует;)

З.Ы. «день рождениZ» — ошибки нет)

Information

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