iЛаборатория » программирование

Усовершенствованный компонент 1С-Битрикс bitrix:menu

Добрый день, дорогие читатели!

Если Вы следите за моим  twitter‘ом, то наверное, читали твит анонс, в котором я говорил про пост о 1С-Битрикс и jQuery меню. В данный момент, решил не много отдохнуть от работы и диплома, поэтому выкладываю пост.

Как видно из названия, в данном посте пойдет речь о стандартном компоненте 2.0 CMS 1С-Битрикс, который я немного усовершенствовал под свои нужды. Начну из далека, по работе дали задание, в котором требуется реализовать раскрывающиеся меню с сохранением раскрытых пунктов при переходе и реализовать все это на файлах меню (.left.menu.php). Как только я получил данное задание, задумался о том, как же реализовать меню на файлах? До этого я сталкивался только с меню строящимся из информационных блоков. Сразу бросается в глаза, что можно использовать стандартный компонент bitrix:menu, в котором есть все необходимые настройки, кроме одной: вывод полного меню на любой странице, даже после перехода.

Формулировка задачи

Во-первых, необходимо доработать компонент bitrix:menu и научить его всегда выводить выбранное меню (left) от корня сайта. Во-вторых, привязать меню на jQuery с плагином jQuery.cookie. Со вторым пунктом все намного проще, так как наработки в данном направлении уже имеются и о них я писал на блоге (пост “Меню на jQuery“). С первым в общем-то тоже проблем не было, нужно было только придумать как все красиво подправить, чтобы это работало, было удобно и можно было использовать в других проектах. С постановкой задачи мы определились, пора приступать к реализации.

Читать полностью… »

Шаблон проектирования Singleton

Добрый вечер!

Сегодня хотелось бы “пролить свет” на такую особенность создания  крупных приложений, как Web направленности, так и оффлайн программ – как проектирование. Под проектированием системы понимается создание проекта программного обеспечения, на выходе мы должны иметь технический проект. Грамотное проектирование позволяет избежать многих проблем в будущем, связанных с расширением программы и доработками.

При проектировании программного обеспечения используют паттерны. Паттерн – это шаблон, т.е. готовое решение какой-либо задачи разработки ПО. При правильном подходе к проектированию и использованию шаблонов проектирования, мы получим мощный, гибкий, легко расширяемый и изменяемый программный код или продукт. Согласитесь это очень полезно, особенно тогда, когда проект разрастается до внушительных размеров.

Сегодня я попытаюсь рассказать о шаблоне проектирования Singleton.

Читать полностью… »

Проба пера -> RSA шифрование на Java

Добрый день!

Как Вы, наверное, помните я в данный момент пытаюсь разобраться и вникнуть в язык программирования Java. В данный момент читаю одну замечательную книгу в которой все доступно объясняется и вот вчера, читая ее,  подумал, что пора что-нибудь написать, хотя бы кривое и не оптимизированное, но мало мальски рабочее. По бродил по интернету и в который раз вышел на статью о криптографии и в частности методе RSA. Раньше у меня как то не очень получалось разобраться в данной теме, но вчера решил, что пора наконец-то хотя бы эти азы понять.

В итоге потратив пару часов на чтение Wiki, реализовал данный вид шифрования информации. В данный момент он не совсем рабочий, т.е. иногда почему-то дешифрует не правильно – с этим буду еще конечно разбираться, но “проба пера”, я считаю, успешна.

Читать полностью… »

Введение в язык программирования Java

Добрый день!

Сегодня хотелось бы кратко рассказать о языке программирования Java. На данный момент я изучаю данный язык программирования и хотелось бы поделиться полученными знаниями с Вами, дорогие читатели. В данном посте я расскажу об истории Java, синтаксисе и об инструментах для разработки программ. Приступим.

История

Родителем языка Java, является компания Sun Microsystems, анонсировавшая язык в далеком 1995 году, а точнее 23 мая 1995 года. Изначально данный язык программирования был назван Oak, что в переводе означает “Дуб”, разрабатывался как язык программирования для бытовой техники, но со временем был переименован в Java. И со сменой названия поменялось использование – написание клиентских приложений и серверного программного обеспечения. Название Java происходит от кофе Java, которое любили многие программисты, именно по этому на эмблеме изображена дымящаяся чашка кофе. Стоит отметить, что данный язык является полностью объектно-ориентированным.

Синтаксис

Синтаксис языка программирования Java очень похож на синтаксис C++, все логические конструкции, такие как IF-ELSE, полностью схожи, а так же циклы FOR, WHILE и DO WHILE. Данный язык содержит 8 примитивных типов, опять таки все их знаем по C++, такие как: byte, short, int, long, float, double, char и boolean. Приведение типов, опять таки похоже на приведение типов в C++, например, чтобы привести переменную типа double к int типу, стоит воспользоваться такой конструкцией:

1
2
double speed = 60.0;
int speedInt = (int)speed;

В более общем случае мы можем присвоить значение любого типа из следующего списка переменным любого типа, указанного в списке правее:

byte -> short -> int -> long -> float -> double

Так как язык программирования Java, является объектно-ориентированным, то все наши программы будут состоять из класса или классов.

Читать полностью… »

Своя форма добавления элемента в 1С-Битрикс

Добрый день!

Работая программистами, мы сталкиваемся с различными задачами, некоторые задачи относятся к наиболее часто встречающимся, некоторые наоборот, достаточно редкие и поэтому вызывают трудности при реализации. Сегодня мы рассмотрим стандартную задачу при разработке сайтов на CMS 1С-Битрикс. Задача будет заключаться в создании своей формы добавления элемента в инфоблок. По данной задаче хватает материала, но я бы хотел, так сказать, собрать все воедино и показать, как я реализовал данный функционал.

С задачей мы определились, пора приступить к реализации, первым шагом к достижению нашей цели будет – создание инфоблока. Думаю кто работает с CMS 1С-Битрикс, знают как это сделать, но все же я напишу подробнее этот шаг. Во-первых, создаем обычный тип инфоблока, даем ему нужное название и так далее. Во-вторых, в данном типе инфоблока создаем информационный блок, опять таки даем ему имя, настраиваем, но дальше самое интересное, в пункте “Файл для редактирования элемента, позволяющий модифицировать поля перед сохранением“, вписываем путь, пока на несуществующий файл: “/bitrix/php_interface/include/iblock_actions.php“. Для чего нам это нужно я объясню ниже, сейчас главное сделать подготовительные работы. Последним штрихом будет заполнение пункта с именем: “Файл с формой редактирования элемента“, опять таки вставляем ссылку на несуществующий пока что файл: “/bitrix/php_interface/include/iblock_element_edit.php“. Все на этом наши подготовительные работы с информационным блоком закончены.




Вторым шагом будет создание формы добавления элемента, для этого перейдем в папку “/bitrix/php_interface/” и создадим новую папку с именем “include“, думаю все понимают что имя папки может быть и другим, но для этого не забудьте исправить пути в первом шаге. В папке “/bitrix/php_interface/include/” создаем файл, который будет содержать нашу форму добавления товара, имя файлу даем следующее: “iblock_element_edit.php“. Все теперь нам надо написать форму.

Читать полностью… »

О программировании и языке Java

Добрый день, дорогие читатели!

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

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

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

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

Читать полностью… »

Меню на jQuery

Доброго времени суток, уважаемый читатель!

Совсем не давно по работе получил задание сделать раскрывающееся меню, да не просто меню, а с запоминанием раскрытых разделов, возможностью перехода на страницу товара по нажатию на название раздела и раскрытием / закрытием по нажатию на знак “+”. Данный функционал, необходимо было интегрировать в CMS 1С-Битрикс, поэтому я принял решение делать компонент, но в данном посте не об этом речь, если конечно будет интересно почитать о компоненте, то напишу.

Итак, постановка задачи ясна, теперь приступим к реализации. Но перед тем как перейти непосредственно к программированию и написанию, я думаю стоит более подробно разобраться в требованиях предъявляемых к нашему меню, а именно сохранение раскрытия после перезагрузки страницы и возможность перехода на страницу раздела по нажатию на название. Во-первых, чтобы сохранялась иерархия, мы будем использовать куки, так как это самый простой вариант реализации, да и другого я что-то сходу так и не придумаю. Во-вторых, переход осуществляется по нажатию на название раздела, т.е. для раскрытия мы сделаем знак “+”, который будет храниться в теге span, ну вот теперь приступим.

Читать полностью… »

Интересные решения на PHP

Добрый день!

Сегодня, как видно из названия поста, я бы хотел поделиться интересными способами решения задач (определенных), на языке программирования PHP. Хотелось бы показать интересный способ работы с ассоциативным массивом, на примере решения задачи: “нахождение коэффициентов”, интересный способ получения переданных переменных ($_POST[], $_GET[]). Данные способы не претендуют на оригинальность, но они по-своему красивы, вот это я сейчас и попытаюсь Вам показать.

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

//Вычисляем знак
if($i == ($count_param-1)){ $minus = -1; }else{$minus = 1;}
foreach($word as $pos => $letter)
{
    //Цель данной функции привести такой пример: A+AC=AD к
    //1*A+10*A+1*C=10*A+1*D
    //С учетом знаков при переносе
    $coefficient[$letter] += $minus * pow(10, count($word) - ($pos + 1));
}

Что есть что? Знак, как видно из комментария, относиться к упрощению, т.е. когда упрощаем уравнения такого вида 1*A + 10*A + 1*C = 10 *A + 1*D, приводим к 1*A + 10*A + 1*C – 10 *A – 1*D = 0, тут все понятно. Массив $word, содержит слово, $pos – его позиция (от 0 до $count_param-1), $letter – символ. Теперь еще не много объясню, что мы тут сделали такого хитрого. В массив coefficient, мы заносим каждую букву слова, а значение – это ее коэффициент, получается $coefficient['A'] = 1, это при занесении первой буквы, заносим дальше: $coefficient['A'] = 11, а самую последнюю вычитаем, получаем в итоге: $coefficient['A'] = 1. Вот в этом то и есть “крутость” метода, нам ничего не надо считать самим, все это сделает PHP, при заносе повторного элемента.

Читать полностью… »

Плагин WP ToDoList для WordPress!

Добрый день!

Начну с того, что так как я являюсь программистом, то рано или поздно меня должно было заинтересовать написание плагинов под всеми любимый WP…и это свершилось :) Сегодня хочу представить мой первый плагин с говорящим названием WP ToDoList! В данном посте я хочу рассказать о применении, назначении, функционале и просто об этом плагине. Надеюсь, что мой плагин заинтересует множество блоггеров и самое главное найдет свое применение!

Первая мысль о написании данного плагина мне пришла в тот момент, когда я сидел и смотрел в админку своего блога и меня осенила идея…а вот записать ее было не куда :( Так и родилась мысль о плагине WP ToDoList. Данный плагин предназначен для записи идей, заданий, важных дел и все это с возможностью показа пользователям, т.е. точно так же можно писать анонсы на посты!

Плагин WP ToDoList на сегодняшний момент имеет версию 0.9.5 Beta, в данную версию включен такой функционал: добавление простой записи или задания, редактирование или удаление записей и заданий, просмотр всех записей и заданий, настройка плагина. Теперь подробно о каждой функции. Начнем с добавления простой записи или задания.

В плагине WP ToDoList предусмотрено два вида записей: простая запись и задание. Простая запись отличается от задания, тем что не содержит даты начала и даты окончания, в остальном все одинаково.

Читать полностью… »

Я сейчас работаю над…

Добрый вечер!

Хотелось бы рассказать над чем я сейчас работаю! Как Вы знаете, я работаю программистом в одной фирме, а так же работаю ИП’ником, ну и конечно же поддерживаю себя в форме и для себя пишу программки и реализую свои проекты. В последние дни за работай и своими проектами провожу очень много времени и вот, чем я занимался сейчас расскажу.

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

С ИП, относительно предыдущего – все более менее. Завтра или послезавтра буду подписывать договор на поддержку сайта на год, а в общем поддерживать тот сайт буду уже 3 год – постоянство радует :) Правда обновлений там совсем не много и следовательно и денег тоже не много на этом зарабатываю, но это лучше, чем совсем ничего ;) Хотелось бы конечно найти заказ на сайт, но пока, что то никто не обращается, а жаль…

И последним пунктом будут мои проекты. В данный момент изучаю тему написания плагинов на WordPress. Уже начал писать свой плагин, аналогов, лично я не видел, так что думаю будет востребован. Вот по своим проектам много, чего могу рассказать, но так как все они в стадии глубокой альфы – не буду. Скажу только, что первый плагин должен будет выйти в течении недели, а вот второй намного дольше.

Еще в последнее время заинтересовала разработка под ОС Android, вот хожу пускаю слюни на коммуникаторы – денег нет :( (( Но я надеюсь, что я найду их и куплю себе все таки Android’a, так как разработка программного обеспечения под данную ОС в данный момент очень востребована, да и лично мне очень интересна.

Ну, а Вам советую, подписываться на RSS ленту, чтобы не пропустить выход плагинов и других программ от меня ;)

С уважением, Главный Лаборант!