PrestaShop. Про глюке в багаторівневій навігації

PrestaShop Blocklayered

Привіт Хабр! Я розумію, що історія, про яку я хочу розповісти зовсім звичайна. У кожного програміста, який працює з Open Source, таких випадків до десяти на день. Але я все одно вирішив про неї написати. Комусь вона реально допоможе, а кому-то може просто поліпшить настрій, що теж непогано.

Буде трохи реверс-інжинірингу, трохи філософських роздумів, і звичайно щасливий кінець. Кому важливо тільки виправлення глюку – можете не читати весь цей бред і відразу скопіювати хак з кінця статті. У будь-якому випадку, ласкаво просимо під кат.


Читати далі →

Перехоплення системних викликів Linux за допомогою LSM



Нещодавно надійшли такі завдання: зібрати ядро Linux, написати для нього модуль і з його допомогою перехоплювати системні виклики. І якщо перші дві я виконав без проблем, то в процесі виконання третьою у мене виникло враження, що робота з системними викликами вийшла з моди років 10 тому.

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

Читати далі →

Модульне додаток на Xamarin

У цій статті ви дізнаєтеся про цікаві проблеми і їхні рішення, які виникали в процесі розробки «конструктора» додатків, побудованого на модульній архітектурі, у компанії Notissimus. Проект знаходиться в активній стадії розробки, тому будемо раді дізнатися вашу думку в коментарях, а також запрошуємо на заключний у 2016 році митап для розробників на Xamarin. Всіх зацікавлених просимо під кат.

Читати далі →

$mol: reactive micromodular ui-framework

Скільки потрібно часу, щоб просто вивести на екран великий список, використовуючи сучасні фреймворки?





Список на 2000 рядків ReactJS AngularJS Raw HTML SAPUI5 $mol Поява списку 170 ms 420 ms 260 ms 1200 ms 50 ms Оновлення всіх його даних 75 ms 75 ms 260 ms 1200 ms 10 ms
Напишемо нехитра додаток — особистий список завдань. Які у нього будуть характеристики?






ToDoMVC ReactJS AngularJS PolymerJS VanillaJS $mol Розмір ( html + php + css + templates ) * gzip 322 KB 326 KB 56 KB 20 KB 23 KB Час завантаження 1.4 s 1.5 s 1.0 s 1.7 s 0.7 s Час створення і видалення 100 задач 1.3 s 1.7 s 1.4 s 1.6 s 0.5 s
Невелика головоломка: перед вами синхронний код, який завантажує і обробляє вміст 4 файлів, але з сервера вони вантажаться паралельно. Як таке може бути?
Синхронна паралельна завантаження ресурсів
А тепер прошу за мною в кролячу нору, настав час дивовижних історій...

Читати далі →

справа не в кількості рядків коду. Від серійного розробника модулів

Синдре Сорхус — автор більш, ніж 600 модулів npm (666, Карл!). У недавньому AMA (хто не знає, це такий формат, коли хто-небудь відомий/цікавий пропонує позадавать йому питання, наприклад, у вигляді тікетів до гіт-репозиторія, хоча, звичайно, відоміший /r/AMA і фуршет у Лебедєва) він пояснив свою позицію з приводу модулів-однострочников, які часто викликають критику на адресу node.

Я збирався написати пост в блозі на цю тему, але, на жаль, цього я не так продуктивний, як в написанні коду.

tl;dr Невеликі спеціалізовані модулі потрібні для повторного використання і для того, щоб робити великі і складні штуки, які легко зрозуміти.

Люди дуже стурбовані кількістю рядків коду. LOC взагалі не має ніякого значення. Не важливо, модуль складається з одного рядка, або з сотень. Вся справа в приховуванні складності. Думайте про модулях node як про кубиках lego. Вас не цікавить, з чого і як вони зроблені. Все, що вам потрібно знати, як використовувати ці кубики для побудови свого лего-замку. Роблячи маленькі і спеціалізовані модулі, ви можете легко будувати великі і комплексні системи без контролю за тим, як кожна окрема деталь працює. Наша короткочасна пам'ять скінченна. Ці модулі можуть повторно використовувати інші люди і кожне поліпшення і виправлений баг отримають всі з них.

Уявіть собі, якщо б виробники ПК виробляли процесори самі. Більшість робили б це погано. Комп'ютери були б дорожче, а інновації відбувалися повільніше. Замість цього більшість використовує Intel, ARM і інші.

Читати далі →

Використання різних VCS репозиторіїв в PhpStorm

Введення

При розгортанні проектів заснованих на модульних програмах (наприклад, Magento) стикаєшся з тим, що в проекті співіснує код, що знаходиться в різних репозиторіях. PhpStorm цілком добре справляється з подібною ситуацією. Припустимо, у нас є основний проект, розташований на Github'е, в якому використовуються один новий модуль, розташований там же, і один legacy-модуль, розташований в SVN-репозиторії:


Працювати одночасно з декількома git-репозиторіями дозволяє механізм git submodules, а PhpStorm також дозволяє до цього додати і SVN-репозиторій.

Читати далі →

Основи роботи з модулями в Node.js

Будь-який проект поскладніше «Hello World» складається з деякої кількості файлів, за якими розносять код. Це дає можливість структурувати проект, винести незалежні частини, які можна буде використовувати в інших проектах і взагалі зробити код наочніше.
 
Так ось, в Node.js кожен такий файл і представляє собою модуль, який можна підключити.
Підключення відбувається за допомогою виклику функції
require
, якій потрібно передати шлях до файлу.
 
 
var authModule = require('./auth');

Даний код підключає модуль авторизації і робить його доступним через змінну
authModule
.
 
Залежно від того, який параметр переданий у функцію
require
, буде відрізняться алгоритм підключення модуля. Так що давайте подивимося на принципи підключення модулів в Node.js. Зазначу, що вся ця інформація доступна в документації .
 
Разом з Node.js поставляється кілька вбудованих модулів, для підключення яких потрібно просто вказати назву модуля.
 
 
var http = require('http');
    var cluster = reqiure('cluster');

Потрібно відзначити, що вбудовані модулі мають пріоритет над всіма іншими, якщо в функцію
require
передано їх назву. Так наприклад,
require('http')
завжди поверне вбудований модуль, навіть якщо буде сторонній модуль з такою назвою або файл з таким ім'ям. Список всіх вбудованих модулів і документацію по них можна знайти на сайті . Исходники цих модулів можна подивитися в репозиторії проекту .
 
Читати далі →

JavaScript модулі

      Переклад статті «JavaScript Modules», з сайту jsmodules.io
 
У новій версії JavaScript з'явиться модульна система, головним чином натхненна ідеєю модулів Node.js.
У цій статті я розповім, як це буде працювати.
 
 

Створення модуля

В якості вправи, ми побудуємо простий
asap
модуль, який дозволить призначати виконання дій «як тільки так відразу» асинхронним чином. У Node.js, ви можете зробити це за допомогою
process.nextTick
, є і різні підходи, які працюють у багатьох браузерах. Ми створимо модуль, який працюватиме в будь-якому оточенні. 1
Читати далі →