Pull to refresh
  • by relevance
  • by date
  • by rating

Обработка древовидного массива со Smarty

Lumber room
Вчера столкнулся с проблемой. Имею массив, типа:

1 => array(
  'title' => 'название 1',
  'sub' => array(
    2 => array(
      'title' => название 2',
      'sub' => array(
        3 => array(
          'title' => 'название 3'
        )
      )
    )
  )
);

Обработка его средствами smarty получилась никакая — не поддерживает он бесконечных циклов внутри какой-либо функции. На уровне PHP это сделать не проблема — нужно просто прогнать весь массив через одну функцию вывода, в которой при нахождении подэлементов вновь делать вызов этой же функции, только уже с массивом подэлементов и дальше по аналогии.

Может кто реализовывал вывод таких древовидных массивов с помощью смарти? :)

Update: Смотрим вариант, найденный мной на каком-то форуме.
Читать дальше →
Total votes 8: ↑3 and ↓5 -2
Views512
Comments 14

Javascript — получение данных из формы в хэш-массив

Lumber room
Простая функция, которая может быть кому-то полезна.

Цель: отправить данные из формы методом jQuery.post() без перезагрузки страницы.
Задача: получить данные из формы в виде хэш-массива.

Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Views911
Comments 14

Быстрый доступ к 2D-массиву во флэше

Adobe Flash
Задача простая и типичная. Есть большой двумерный массив. И нам хочется наиболее эффективно с ним работать. В моем случае, меня интересовал массив чисел (байт).

Что ж… Самое простое, что приходит на ум — это воспользоваться стандартным двумерным массивом типа и обращаться к элементам на манер a[x][y]. Но насколько это эффективно? Возможно, будет быстрее оперировать с одномерным массивом и обращаться к элементам как a[x + y*size_x]?

Чтобы расставить все точки над i, я написал тест, который проверяет скорость чтения и записи различных вариантов массивов.

На ум пришли следующие варианты:
  • 2-мерный нетипизированный массив (Array)
  • 1-мерный нетипизированный массив (Array)
  • 2-мерный типизированный массив (Vector.<Vector.<int>>)
  • 1-мерный типизированный массив (Vector.<int>)
  • Использование BitmapData как хранилища и setPixel/getPixel для доступа
  • 1-мерный массив байт (ByteArray)
  • Ну, и наконец, изврат. Обращение к ByteArray, ускоренное средствами быстрого доступа к памяти технологии Alchemy
Читать дальше →
Total votes 32: ↑24 and ↓8 +16
Views1.1K
Comments 47

В Chrome (dev) реализованы будущие функции JavaScript

JavaScript
Комитет ECMA сейчас работает над разработкой следующей версии JavaScript, известной под кодовым названием Harmony. Он должен быть закончен к концу следующего года и станет самым большим обновлением за всю историю языка. Разработчики Chrome и V8 решили уже сейчас реализовать некоторые будущие функции JavaScript в браузере Chrome (версия для разработчиков).

Чтобы активировать новые функции, нужно в последнем релизе с dev-канала набрать chrome://flags и включить флаг Experimental JavaScript features.
Читать дальше →
Total votes 40: ↑34 and ↓6 +28
Views2.3K
Comments 93

VMA – умная флэш-память для базы данных

Hewlett Packard Enterprise corporate blog
В прошлом году мы уже подробно рассказывали о флагмане линейки HP ProLiant — 8-сокетном DL980, который впервые реализует функции бизнес-критичных систем для серверов стандартной архитектуры. Одна из основных сфер применения этого сервера – обслуживание больших баз данных Oracle, Microsoft SQL Server. В нынешнем году на базе этого сервера было разработано новое решение, позволяющее резко поднять производительность баз данных за счет использования флэш-памяти.


Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views12.9K
Comments 19

Arr.js: события для стандартного массива

JavaScript
Arr.js — это «класс», унаследованный от стандартного Array. Отличительными особенностями являются: наличие события change для отслеживания любых изменений в массиве, и методы insert(), update(), remove(), set(), get() для упрощенной работы с массивом. Доступны все «родные» методы стандартного Array.

var fruits = new Arr('apple', 'orange', 'pineapple');

fruits.on('change', function(event) {
  alert('I changed fruits: ' + fruits.join(', '));
});

fruits.push('banana');

Читать дальше →
Total votes 32: ↑26 and ↓6 +20
Views9.4K
Comments 25

Указатели, ссылки и массивы в C и C++: точки над i

C++C
Tutorial
В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.

Обозначения и предположения


  • Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
  • Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
  • Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как int TYPE[2];
  • Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как int TYPE, int *TYPE и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи;
  • «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
  • Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.


Указатели и ссылки


Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):

int x;
int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель

Читать дальше →
Total votes 70: ↑48 and ↓22 +26
Views482.8K
Comments 72

Выгодная замена тиринговым массивам: обзор и тесты полностью флешевой железки HP 3PAR 7400

КРОК corporate blog

Пинать такую коробку следует с особой осторожностью

В целом я просто хотел сказать, что если вы смотрите all-flash массив на замену тирингового с ценой за гигабайт чуть пониже, надёжный и от топового вендора — продолжайте читать. Минимальный американский street price, заявленный вендором, начинается с 19 тысяч долларов. Но понятно, что на проектах, где нужно такое железо, всегда находится скидка, программа или спецпредложение, которые могут уменьшить цену спецификации, порой значительно. Заглядывайте внутрь, чтобы понять, почему SSD может быть дешевле тирингового массива, в частности, для VDI.

Началась история этой железки с того, что в HP давно подозревали, что после примерно 2012 года всё больше и больше серверных мощностей будет требовать быстрых СХД. Поэтому они купили контору 3PAR, клепающую неплохие мидрейнджевые системы хранения, взяли напильник — и понеслось. Что получилось — сейчас покажу.
Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Views12.8K
Comments 17

Аналог std::vector из C++11 на чистом C89 и как я его писал

Abnormal programmingEntertaining tasksC
Sandbox

image
Жилой массив людей. Нет, серьёзно.


Холивары между ценителями Си и приверженцами его ублюдка сына в лице C++ начались ещё до моего рождения и прекратятся разве что после смерти обоих этих языков и меня заодно.


Адепты великого творения Кернигана-Ритчи до последней секунды рабочего дня готовы доказывать приспешникам Страуструпа аксиомы про вечность Си и его невероятную гибкость.
Те в ответ по-свойски советуют им лучше порадоваться рабочему дню, ведь он вот-вот окажется последним – двадцать первому веку кроссплатформенный ассемблер не нужен.
Распаляясь, сторонники Си приводят миллионы давно прошедших через голову навылет тезисов "почему Си лучше C++", при этом каждый раз подчёркивая, что второй все достоинства первого растерял ещё будучи в отцовской утробе, попутно утратив лик человеческий.
Обвиняемая сторона в обиде не остаётся и...


а хотя постойте, о чём это я.


Я люблю Си, уважаю C++ и не переношу холивары (честно). При этом я осознаю, что в Си действительно не хватает многого, и яркий тому пример – отсутствие удобной работы с данными. В C++ эту проблему во многом решает STL и свойства самого языка. На мой студенческий взгляд, здесь особо отличается всем знакомый std::vector. Если стало интересно, как я реализовал его аналог средствами C89 – прошу под кат.

Читать дальше →
Total votes 58: ↑56 and ↓2 +54
Views24.5K
Comments 67

Особенности организации ИТ-инфраструктуры для видеонаблюдения

RAIDIX corporate blogSystem administrationIT InfrastructureServer AdministrationData storage


Рынок систем видеонаблюдения (сейчас стали использовать модный термин Video Surveillance) развивается быстро и очень технологичен. Крутизна современных систем видеонаблюдения определяется не только мощью видеокамер и функциональностью ПО, но и ИТ-инфраструктурой, которая будет всё это добро обслуживать.

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

Когда дело касается сотен и даже тысяч видеокамер одним сервером или готовым решением из коробки обойтись не получится, особенно если необходимы дополнительные функции, связанные с видеоаналитикой (обнаружение, слежение, распознавание), интеграцией с кассовыми решениями, интеграцией в комплексные системы безопасности (СКУД, ОПС). В таком случае оптимальным решением является использование специализированного ПО для видеонаблюдения – VMS (Video Management Software), которое предусматривает возможность масштабирования и поддержки большого количества IP-камер, а также все необходимые для проекта функции и возможности.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views19.8K
Comments 22

Проектируем СХД для видеонаблюдения

RAIDIX corporate blogSystem administrationIT InfrastructureServer AdministrationData storage


В предыдущей статье мы говорили об особенностях организации ИТ-инфраструктуры и подсистемы хранения данных для видеонаблюдения и пришли к выводу, что в крупных проектах для организации хранилища видеоархива целесообразно использовать СХД (системы хранения данных).

В данной публикации обсудим проблему выбора СХД для видеонаблюдения, преимущества хранилищ на базе RAIDIX и примеры их реальных внедрений.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views14.9K
Comments 14

Основные структуры данных. Матчасть. Азы

ProgrammingAlgorithms
Translation
Все чаще замечаю, что современным самоучкам очень не хватает матчасти. Все знают языки, но мало основы, такие как типы данных или алгоритмы. Немного про типы данных.

Еще в далеком 1976 швейцарский ученый Никлаус Вирт написал книгу Алгоритмы + структуры данных = программы.

40+ лет спустя это уравнение все еще верно. И если вы самоучка и надолго в программировании пробегитесь по статье, можно по диагонали. Можно код кофе.


Читать дальше →
Total votes 24: ↑14 and ↓10 +4
Views98.4K
Comments 38

Почему не надо удалять все элементы массива, переназначая его на [ ]?

High performanceWebsite developmentJavaScriptProgramming
Translation
Tutorial

Очень часто бывают моменты, когда мы хотим удалить все элементы массива, как вариант, у нас есть список задач, и мы хотим удалить все задачи одновременно.


Рассмотрим такой список элементов:


let items = ["tea", "coffee", "milk"];

Чтобы удалить все элементы из массива, мы устанавливаем его значение в пустой массив


items = [];

Это работает отлично, и вы обнаружите, что данный пример используют постоянно. Но с этим есть проблема ...


Читать дальше →
Total votes 56: ↑6 and ↓50 -44
Views7.8K
Comments 51

Демонстративно вертим массивы для новичков

ProgrammingC++Image processingLearning languages
Sandbox

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

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

Читать далее
Total votes 27: ↑7 and ↓20 -13
Views5.5K
Comments 17

Майнкрафт для геологов: 3D-рендеринг миллиарда ячеек на встроенной видеокарте (часть 1)

РН-БашНИПИнефть corporate blogProgrammingWorking with 3D-graphicsData visualizationIT career
Tutorial

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

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

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

* среди известных авторам.

Дисклеймер: эта статья не является пособием по 3D-рендерингу и графическому API. Всё, что требуется от читателя – это понимание основных принципов 3D-графики: что такое атрибуты вершин и т. п. К счастью, на Хабре есть множество хороших статей (раз, два), которые можно прочитать для освежения этих концепций в памяти. В этой статье мы использовали современный OpenGL 4.5, но всё описанное будет работать даже на древнем OpenGL (ES) 2.0.

Читать далее
Total votes 10: ↑10 and ↓0 +10
Views1.6K
Comments 2

Восстанавливаем RAID 5, 1 или 0 при поломке одного или нескольких дисков

Hetman Software corporate blogConfiguring LinuxData recovery
Tutorial
В нашем пошаговом руководстве, я расскажу о нескольких методах восстановления информации с программных RAID 5, 0 или 1, которые собраны под «Linux».


Читать дальше →
Total votes 11: ↑3 and ↓8 -5
Views6.1K
Comments 25

Не такой уж и бесполезный: металлические метаповерхности в фотонике

ua-hosting.company corporate blogManufacture and development of electronicsPopular scienceNanotechnologiesPhysics


Всему свое время и место. Эта поговорка вполне применима и к определенным веществам, элементам и химическим соединениям. Как бы ученым ни хотелось иметь в своем распоряжении «универсального солдата», которого можно было бы использовать и в оптике, и в акустике, и биоинженерии, многие материалы так же хороши в одной отрасли, как плохи в другой. Подобное касается и металлов, которые уже давно считают ужасным материалом для работы в области фотоники, акцентирующей свое внимание на оптических сигналах. Металлы в фотонике это, одним словом, потери, т.е. очень сильное рассеяние электрической энергии. Однако ученым из Оттавского университета (США) решили показать, что металлы не такие уж и бесполезные в фотонике, создав массив из металлических наночастиц, показавший высокую добротность. Какие вещества использовались для создания массива, как он работает, какие конкретно показывает результаты, и как его можно применить на практике? Об этом нам поведает доклад ученых. Поехали.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views998
Comments 1