test

Олег Бунин, Построение высоко-нагруженных систем(запись с конференции IForum 2013)

Реально Бунина приятно слушать, много очень полезного, вынесенного из его опыта, в построении высоко-нагруженных системах. В докладе он рассматривает архитектуру под высокие нагрузки, кратко рассказывает о постановке задачи на разработку такой системы и рассматривает несколько примеров, в том числе построение сайта знакомств подобного Badoo и нагруженного новостного сайта.

test

MongoDB вместо MySQL/MariaDB как основная СуБД. Небольшие впечатления.

MongoDB
Если вы используете для своего проекта VPS/VDS сервер, вы вполне можете заменить реляционную базу данных на MongoDB. Познакомившись поближе вы увидите все те же знакомые понятия что и в реляционных базах, такие как: база данных, коллекция(собственно набор документов, а-ля таблица без жесткой структуры по полям), документы(те же кортежи из реляционных баз). Инструменты бекапа/восстановления присутствуют. Выборка данных тоже. Врапперы к PHP и другим языкам тоже.

Хороший мануал
Официальная дока по врапперу к PHP

Прикрутить MongoDB к проекту вместо MySQL\MariaDB не составит практически никаких усилий, а при грамотном подходе даст не мало преимуществ. Ставиться все очень просто из дистрибутива. Впечатления от монго хорошие. Может немного позже напишу более подробно о нем.

Еще немного ссылок внутри материала.

test

Русская операционная система. ОС Фантом

Phantom OS
Не знаю смеяться ли, или воспринимать это серьезно. Сложно воспринимать однозначно на сколько уверены авторы своего детища. Склоняюсь что у ReactOS больше шансов выйти на рынок чем у Фантома. Но может кому тоже будет любопытно почитать. Сам я отношусь к этой информации достаточно скептически. История имеет свойство повторяться и тут я скорее склонюсь в сторону что будущее за облачными ОС, как когда-то раньше за основу использовались терминалы подключаемые к мейнфрейму.


Q: Что такое ОС Фантом? Это клон Windows или ещё раз переупакованный в новую коробку Linux?

A: Ни в коем случае. Наша задача — не дополнить существующие ОС, которые и без того изрядно тяжеловесны и перегружены, а построить новую платформу.

Q: В чем же интерес или польза от несовместимой ни с чем системы?

A: Вовсе не обязательно быть несовместимым, имея технологическое преимущество. Мы реализовали POSIX-подсистему в рамках Фантом. Конечно, не все возможности ОС Фантом доступны из POSIX-подсистемы, но мы работаем над этим.

Q: Вы собираетесь конкурировать с Windows? Это несерьёзно и нереально!

A: Существует несколько примеров более-менее удачной конкуренции с Windows. Наиболее известные ОС широкого профиля — MacOS и Linux. Менее известные и нишевые — PalmOS и Symbian. Отметим, что все эти системы (за исключением, пожалуй, MacOS) были созданы при достаточно умеренных вложениях.

Q: Но MacOS-то обошлась в огромные деньги?

A: Отчасти. Если смотреть на весь путь её развития — то да. Но, фактически, десятая версия MacOS (та, которая используется сейчас) написана заново в течение довольно короткого времени. Эта система, как и Linux, эффективно использовала потенциал Open Source сообщества и обошлась в довольно обозримые деньги. Во всяком случае

test

Подключение платежной системы 2checkout к вам на сайт

2checkout direct checkout

Содержимое

  • Предисловие
  • Регистрация и одобрение.
  • Direct и не Direct
  • Прикручиваем саму платежку
  • Обработка платежа вашим сайтом после оплаты

Предисловие

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

Итак, 2checkout, имеет достаточно обширную документацию по своему API и даже несколько подготовленных заранее библиотек для разных языков программирования. Но реально не хватает кратеньких примеров. Так вот, все что вам нужно для того чтобы прикрутить эту систему:

Регистрация и одобрение.

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

Direct и не Direct

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

Прикручиваем саму платежку

Вам нужно разместить саму форму платежной системы у себя на сайте. Используем вариант не Direct платежа:

test

Если DPKG/APT/APTITUDE медленно работает

Когда DPKG, APT, APTITUDE начинают медленно работать стоит попробовать выполнить следующие команды:

1) dpkg --clear-avail
2) dpkg --forget-old-unavail
3) Если используете grep-available или другую утилиту для проверки доступных файлов, обновите файл используя sync-available (в пакете dctrl-tools).

Оригинал на английском

test

PrestaShop 1.5+ Получаем содержимое корзины

cart

Чтобы получить содержимое корзины достаточно столь короткого кода:

$cart = new Cart($this->context->cookie->id_cart);
$cartProducts = $cart->getProducts();

Так же, чтобы увидеть больше можно взглянуть на файл контроллера корзины, который находиться в /classes/Cart.php

test

Правила для Ассоциаций Содержит-Один(HasOne) и Принадлежит(BelongsTo) в ExtJS

Правила для Ассоциаций Содержит-Один(HasOne) и Принадлежит(BelongsTo) в ExtJS

  1. Помещайте прокси в модель, пока у вас не будет веской причины как в случае [1]
  2. Всегда используйте полное имя модели
  3. Всегда устанавливайте getterName
  4. Всегда устанавливайте setterName
  5. Всегда устанавливайте associationKey, если подключаемый обьект возвращает тот же ответ что и текущий
  6. Всегда устанавливайте foreignKey, если хотите загружать связанный обьект только по надобности
  7. Делайте как можно короче instanceName
  8. Геттер ведет себя по разному в зависимости от того, иностранные объект загружается или нет. Если он загружен, внешний объект возвращается. В противном случае, вам нужно передать в функцию обратного вызова, чтобы получить его.
  9. Нужно установить название свойства, если планируете перегрузить ассоциацию.
  10. Вам не нужно отношение belongsTo для работы с hasMany
  11. Установите primaryKey если ID поле родителя не "id"
  12. Иногда вам нужно использовать uses или require для ассоциации belongsTo.
  13. Вызов сеттера setter() не создает экземпляр. Установите object.belongsToInstance = obj если вызываете setter().

...

test

ExtJS 4: Отображение связанных моделей в сетке(Grid) Перевод

Примечание переводчика

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

Если кому не понравиться перевод, можете смело читать в оригинале: Rendere association values in a grid panel

Перевод

ExtJS 4 предоставляет отличный механизм моделей данных. Важным аспектом в Ассоциациях является определение отношения между разными моделями в вашем приложении. Это важная возможность с всего парой побочных эффектов.

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

В моем примере у меня есть Документы(Documents) связанные с Компонентами(Components). В нашем натуральном языке обработки[NLP] модель строит приложение, каждый документ может быть использован в разных аспектах модели. В любом случае, Компоненты могут быть изменены, удалены из системы, или добавлены новые, по этому я отслеживаю их как отдельные обьекты и ассоциирую их с обьектом Документ.

test

ExtJS: Приложение с авторизацией и меню

Форма входа

Предисловие, мое как переводчика.

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

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

Оригинал по ссылке: http://blog.jardalu.com/2013/5/7/user-login-sencha-extjs

И да, спасибо автору этого материала.


В предшествующей статье(простая форма авторизации), мы создали простое форму авторизации с помощью библиотеки ExtJS Sencha. На сколько не была бы полезна предшествующая статья, все что она делала - показывала форму(представление). В этой статье мы покажем как изменять экран(представление) если авторизация прошла успешно.

В этой статье используется архитектура MVC фреймворка ExtJS. Предшествующая статья не использовала эту архитектуру. Сказать точнее, мы будем использовать только VC(Views,Controller) часть из MVC. MVC состоит из Модели(Model), Представления(View) и Контроллера(Controller). "The MVC Application Architecture" хорошая статья для понимания их MVC архитектуры. В общем-то их архитектура не отличается от стандартного паттерна, всего-лишь формализует путь написания, хранения и использования моделей, контроллеров и представлений.

test

PrestaShop и кеширование внутри модуля

PrestaShop позволяет кешировать данные. Для этого нужно выбрать метод кеширования в админке и внутри модуля использовать функции для работы с кешем.

Чтобы не быть многословным, проще показать кусок кода:

test

ExtJS Grid(компонент сетка) + Ajax(Kohana 3 framework) + ORM. Пагинация. Сортировка.

ExtJs

Введение

Нужно использовать сетку(Grid) в ExtJS, с ее возможностью пагинации и сортировки данных на стороне сервера.

Описание

Как подключать и использовать ExtJS написано много. Но иногда не хватает деталей. Итак, пример того как в компоненте сетка(Grid) использовать данные получаемые в ajax. Эту часть я делал на фреймворке Kohana 3, но не думаю что у вас возникнут особые сложности перевести все это в свой нужный код. Так как код на Kohana 3, то используется HMVC(MVC). Сейчас немного о логике. Данные взяты из прототипа одного проекта, по этому могут быть не совсем полными, но основную суть передают. У нас есть основной контроллер на который мы переходим вызывая отображение нашей страницы с таким вот кодом:

test

Кросс-браузерная верстка(Видео)

На просторах сети много чего можно найти. Толкового правда не всегда много, но есть. Вот попался мне видео-курс по кросс-браузерной верстке. 8 Частей. Длительные, но посмотреть стоит.

Под катом несколько видео.

test

Awesome WM + Java = Белый экран(white screen)

При запуске PhpStorm из-под Awesome WM у меня вместо среды разработки начало показываться просто белое окно. Решение уже существует и находиться Здесь.

Заключается оно в том чтобы использовать OpenJDK с уже существующими фиксами этой проблемы. Для использования из консоли нужно ввести следующую команду:

$ _JAVA_AWT_WM_NONREPARENTING=1; export _JAVA_AWT_WM_NONREPARENTING

Так же можно заставить поверить Java что вы используете другой рабочий стол командой:
$ wmname LG3D
Из пакета suckless-tools

test

Контроллеры в PrestaShop 1.5

Контроллеры в PrestaShop

Предисловие

Сейчас мы рассмотрим Контроллеры в архитектуре PrestaShop, чтобы еще больше разложить по полочкам понимания работы самой PrestaShop. Это сильно поможет нам в дальнейшем не делать лишних действий, покажет нам где брать образцы кода для собственных модулей и покажет что и как работает. Дальше, текст в большей мере представляет перевод официальной документации PrestaShop, который может быть найден тут.

В MVC архитектуре, контроллер управляет синхронизацией данных между Представлением(View) и Моделью(Model). Контроллеры обрабатывают все события и триггеры событий вызываемые пользователем.
Если нужно чтобы какие-то данные были изменены, Контроллер говорит об этом Модели, и передает данные запрошенные/возвращенные из Модели в Представление.
Все контроллеры в PrestaShop могут быть перекрыты классами контроллеров которые наследуют класс-родитель, например AdminController, ModuleAdminController, FrontController или же ModuleFrontController.

Страницы

Subscribe to Nelex.in.ua RSS