Корзина магазина без Ubercart только на Флагах и Вьюсах

15:41 Рубрика: Drupal

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

 

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

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

Всевозможные модули простых корзин как то Node Basket и Simple Cart от уважаемых Dalay и VladSavitsky подходили в принципе, но не хватало гибкости настроек.

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

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



Итак попробую пошагово описать возможность данного решения:

Вывод дерева в MySQL

16:40 Рубрика: Web Development

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

Понеслася.

Пример настройки iptables для защиты веб-сервера

13:58 Рубрика: Linux

iptables – штатная утилита командной строки в Linux, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) netfilter для ядер версий 2.4 и 2.6. При грамотной настройке iptables сервер можно считать относительно защищенным от внешних угроз. В этой статье мы рассмотрим пример конфигурации iptables для защиты стандартного веб-сервера.

Итак, представим себе простой веб-сервер. Рабочими портами при этом являются: tcp 20, 21, 22, 25, 80, 110, 143, 443; udp 53.

Напишем скрипт конфигурации iptables

15 обязательных шагов после установки Drupal

10:06 Рубрика: Drupal

Предлагаем вашему вниманию любопытную статью Даны Уинслоу, специалиста из команды DWUser.com. Это не еще один мануал по установке популярной сегодня CMS. Это практические советы с подробным пошаговым описанием того, что необходимо сделать в обязательном порядке на любом сайте после установки Drupal. Уверена, советы Даны Уинслоу, преподавателя курса обучения DWUser.com, будут полезны и начинающим пользователям Drupal, и тем, кто часто использует эту систему.

Читать

Защита от брутфорса паролей при помощи Fail2Ban

09:42 Рубрика: Linux

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

Работа с патчами

09:37 Рубрика: Linux

  В мире Linux широко используется пара программ diff и patch. diff создает файл, в который записываются различия между 2 файлами или 2 каталогами (т.н. патч), а patch позволяет "наложить" этот патч, т.е. имея патч и один из двух файлов (каталогов), получить другой. Основное применение этих программ - создание, распространение и применение патчей к исходным текстам программ. Например, я нашел ошибку в к.-л. программе и после изучения ее исходного кода понял, что для исправления этой ошибки надо добавить 2 строчки, а еще в одной поменять несколько символов. Я хочу сообщить разработчику об этом, но каким образом указать ему на требуемые изменения? Можно это сделать обычным языком, но гораздо лучше (и удобнее для нас обоих) сделать патч и выслать его разработчику.

  Или другой пример. Ядро Linux, упакованное в .tar.bz2, весит более 30 Мб независимо от его версии. Но файл различий между версиями 2.6.6 и 2.6.7, упакованный в .bz2, весит всего 3 Мб, поэтому для получения исходников ядра 2.6.7 из исходников ядра 2.6.6 достаточно скачать лишь 3 Мб, не выкачивая все 32 Мб заново.

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

  А теперь посмотрим работу этих утилит на практике. Возьмите какой-нибудь текстовый файл и сделайте его копию, а затем отредактируйте эту копию - 1-2 строчки удалите, что-нибудь добавьте, пару строчек просто поменяйте. Затем запустите diff старый_файл новый_файл. Получите файл различий в обычном формате. В нем выводятся только измененные строки, и изменения помечены символами < и > (означающими, что соответствующая строка принадлежит левому или правому файлу в командной строке). Этот формат пригоден только для изучения человеком небольших различий между 2 файлами. Для создания патчей используются другие форматы вывода, задаваемые дополнительными опциями, при этом результат работы diff перенаправляется в файл патча стандартными средствами оболочки.

  Добавьте к строке вызова diff ключ -u. Теперь вывод программы будет представлять собой патч в унифицированном формате, который используется в большинстве случаев (есть еще контекстный формат, включаемый ключом -c, но он используется намного реже). В такой патч включаются и несколько соседних неизмененных строк (т.н. контекст), помогающие программе patch найти место в файле, где произошло изменение. Добавленные во 2-м файле строки помечаются плюсами, удаленные - минусами. Если строка изменилась, она выводится 2 раза - старый вариант с минусом и новый с плюсом. Кроме того, в начале добавляется заголовок, в котором указываются имена и даты изменения обоих файлов.

  diff позволяет получить различия между двумя каталогами. Это используется, как правило, чтобы получить общий патч ко всему дереву исходников программы, если было изменено несколько файлов. Для этого используются ключи -urN, а вместо 2 файлов указываются имена 2 каталогов (старого и измененного). При этом корректно обрабатываются ситуации с созданными/удаленными файлами (файл, отсутствующий в одном из каталогов, считается существующим и пустым).

  Чтобы наложить патч, надо перейти в каталог, где находится старый файл/каталог, и выполнить команду

  patch < файл_патча

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

  patch -p1 < файл_патча

  Здесь -p1 означает, что из заголовков патча надо убрать начальный каталог. Поясню всё это на примере. У нас имеется дерево исходников ядра 2.6.0. Это каталог linux-2.6.0, в котором содержатся каталоги drivers, arch и т.д. И у нас есть патч до версии 2.6.1, в котором содержатся такие заголовки:

  --- a/drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004

  +++ b/drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004

  Видим, что при создании патча старый и новый каталоги назывались a и b соответственно. У нас же каталог называется по-другому, и patch ничего сделать не сможет. Поэтому заходим в каталог linux-2.6.0 и выполняем указанную выше команду. Теперь заголовки будут интерпретироваться как

  --- drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004

  +++ drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004

  и патч приложится нормально.

(c) knoppix.ru

 

 

Далее

Perfect Workflow in Sublime Text 2

20:23 Рубрика: Linux

st2 I’m a confessed code editor addict, and have tried them all! I was an early adopter of Coda, a TextMate advocate, even a Vim convert. But all of that changed when I discovered Sublime Text 2, the best code editor available today. Don’t believe me? Let me convince you in this course.


View

Этот сложный русский язык

11:07 Рубрика: Всячина

Перед нами стол. На столе стакан и вилка. Что они делают? Стакан стоит, а вилка лежит. Если мы воткнем вилку в столешницу, вилка будет стоять. Т.е. стоят вертикальные предметы, а лежат горизонтальные?

Добавляем на стол тарелку и сковороду. Они вроде как горизонтальные, но на столе стоят. Теперь положим тарелку в сковородку. Там она лежит, а ведь на столе стояла. Может быть, стоят предметы готовые к использованию? Нет, вилка–то готова была, когда лежала.

Теперь на стол залезает кошка. Она может стоять, сидеть и лежать. Если в плане стояния и лежания она как–то лезет в логику «вертикальный–горизонтальный», то сидение — это новое свойство. Сидит она на попе.

Теперь на стол села птичка. Она на столе сидит, но сидит на ногах, а не на попе. Хотя вроде бы должна стоять. Но стоять она не может вовсе. Но если мы убьём бедную птичку и сделаем чучело, оно будет на столе стоять. Может показаться, что сидение — атрибут живого, но сапог на ноге тоже сидит, хотя он не живой и не имеет попы.

Так что, поди ж пойми, что стоит, что лежит, а что сидит. А мы ещё удивляемся, что иностранцы считают наш язык сложным и сравнивают с китайским.

(c)

Что такое «челночная дипломатия»

16:52 Рубрика: Всячина

Однажды у Генри Киссинджера спросили:

— Что такое «челночная дипломатия»?

Киссинджер ответил:

— О! Это универсальный метод! Поясню на примере: вы хотите методом челночной дипломатии выдать дочь Рокфеллера замуж за простого парня из русской деревни.

— Каким образом?

— Очень просто. Я еду в русскую деревню, нахожу там простого парня и спрашиваю:

— Хочешь жениться на американской еврейке?

Он мне:

— На*рена?! У нас и своих девчонок полно.

Я ему:

— Да. Но она — дочка миллиардера!

Он:

— О! Это меняет дело…

Тогда я еду в Швейцарию, на заседание правления банка и спрашиваю:

— Вы хотите иметь президентом сибирского мужика?

— Фу, — говорят мне в банке.

— А если он, при этом, будет зятем Рокфеллера?

— О! Это конечно меняет дело!

И такида, я еду домой к Рокфеллеру и спрашиваю:

— Хотите иметь зятем русского мужика?

Он мне:

— Что вы такое говорите, у нас в семье все — финансисты!

Я ему:

— А он, как раз, — президент правления Швейцарского банка!

Он:

— О! Это меняет дело! Сюзи! Пойди сюда. Мистер Киссинджер нашел тебе

жениха. Это президент Швейцарского банка!

Сюзи:

— Фи… Все эти финансисты — дохляки или педики!

А я ей:

— Да! Но этот — здоровенный сибирский мужик!

Она:

— Ооо! Это меняет дело!

Далее

Работа с русскими именами файлов в ZIP и UNZIP под *nix

14:23 Рубрика: Linux
Одна из неожиданных проблем, возникающих при обмене файлами с пользователями
Windows - странное поведение ZIP-архивов. Казалось бы, достаточно правильно
настроить кодировки... Не тут-то было!

Для текстовых файлов достаточно найти редактор с выбором кодировки, для дисков
можно указать кодировку при монтировании, более "продвинутые" форматы архивов
(RAR, 7zip) тоже как-то решают эту проблему; и только ZIP, самый
распространённый и "самый совместимый" архиватор, почему-то неожиданно
оказывается несовместимым в принципе, стоит именам файлов выйти за пределы ASCII.

Есть мнение, что в архивы ZIP имена файлов пишутся в кодировке файловой
системы, и дескать, отсюда и проблемы - в Windows одна кодировка, а в Linux
другая. И виноват в том устаревший архивный формат и сделать с этим ничего
нельзя, а если очень хочется - переименовывать распакованные файлы скриптами и
прочими костылями. Что ж, попробуем.