Доброго времени суток. Сегодня речь пойдёт о кнопках для сайта. Зачастую дизайнеры и верстальщики делают кнопки картинками, что не очень хорошо сказывается на скорости открытия страниц, да и не современно это. В сегодняшней статье я покажу Вам, дорогие читатели, как можно легко и просто сделать реально красивые кнопки на чистом css3, которые легко встроить в любой сайт или использовать для вёрстки. И так поехали.
Многопоточность в PHP (multi-threading) часть 1 — Сокеты
Предисловие, или как возникла потребность.
В очередной раз позвонил клиент, с вопросом только ли у него лёг сайт, сервер и другие его сервисы… а ведь это выходные, праздники, так хочется пить пиво, отдыхать и, главное, не думать о работе… Но немного подумав, возникла идея написать небольшой проект, основой которого будет некая CMS (в моём случае глаз лёг на мой любимый bitrix), корень проекта — это его идея — пинг сервис, ну и оставалась одна проблема, через крон запускать скрипт на проверку статусов серверов… однако учитывая что серверов много, а пинговались не только 80 порты, но и 22, 21 и некоторые другие, то процесс пинга затягивался, поэтому пришлось искать решение из серии многопоточности. В принципе обычные программисты спокойно могут работать с многопоточностью, что на яве, что на сях, что в делфи.. да почти в любом современном языке есть, значит и в PHP должен быть? Ответ на этот и другие вопросы с примерами кода даны в этом посте. Здесь вы найдёте готовые решения по multi threading! Читайте статью под катом.
Недокументированные функции битрикс
Сегодня я поделюсь с Вами списком недокументированных функций 1с-Битрикс, обнаруженных во время исследования содержания файлов БУС 9.0 и выше. Ниже приведены некоторые, наверное самые интересные, из них, которые могут реально пригодится в повседневной жизни. Исходные коды всех рассмотренных функций находятся в файле /bitrix/modules/main/tools.php
Многосайтовость 1С:Битрикс на пальцах HOWTO
Ну начнём с того, что на одной установке Битрикса можно сделать много сайтов (без покупки дополнительных лицензий можно сделать два сайта), а значит закроем первый вопрос: для настройки многосайтовости надо установить Битрикс только один раз.
Есть довольно подробный учебный курс, где описывается два способа настройки многосайтовости. Подробности под катом!
Ставим nginx на сервер с CentOS (самый простой способ)
Зачем нужен Nginx?
Это веб-сервер, предназначенный в основном для отдачи статики (для того чтобы разгрузить бекенд) и использования в качестве фронтендов. Apache при этом можно использовать в качестве бэкенда для генерации динамического контента. Так же Nginx можно использовать в режиме FastCGI, при этом Apache вам не понадобится. Однако при этом режиме у PHP наблюдается ряд проблем, поэтому на помощь приходит php-fpm!
Однако мы сегодня поговорим о совместной установке с Apache, а не в режиме FastCGI. Более того, по задаче у нас эти веб-сервера (один из которых кэширующий proxy) будут находится на одном сервере, поэтому выделим для Nginx — 80, а для Apache — 88 порт!
Установка и настройка git-сервера (gitosis) + веб-морда viewgit (+ nginx)
Занимаясь разработкой программного обеспечения, или сайта часто бывает, что нужно иметь доступ к исходникам из разных мест, например из дома, или работы и др. На флешке носить бывает не удобно, а хочется иметь всегда свежий исходник. Есть выход, это использование GIT сервера. Есть множество компаний, которые предоставляют такую возможность бесплатно, но главное условие — это проекты должны быть OpenSource, т.е. коммерческие проекты туда уже не опубликуешь, они будут доступны всем, и каждый сможет у вас скопировать код. Но что делать если мы хотим иметь свой такой сервер? Есть для этого решение. Данное решение есть как под Linux, так и под Windows, но в рамках данной статьи мы рассмотрим на примере Linux Debian. И так, подробности в под катом (в полной версии данного поста).
Настраиваем сервер — NGINX + CentOS + Plesk 9

Сегодня я поведую о том как можно поднять на своём сервере под управлением CentOS кэширующий прокси nginx. Данная статья подойдёт как под VPS, так и под DDS и просто обычный компьютеры. Для начала расскажу зачем это всё нужно. Бывает так, что у нас растёт посещаемость, а мощностей сервера не хватает для обработки большого потока юзеров. В этом случае мы можем использовать кэш нашей CMS, однако чаще всего это не сильно спасает, а нагрузка всё равно будет возрастать. Есть ещё вариант поставить eAccelerator. Но опять же прирост в производительности не так уж и высок. Про nginx можно рассказывать долго, но в кратце расскажу о его основных возможностях. Подробности под катом.
Сортировка товаров в 1С Битрикс
Бывает так, что нам нужно сделать какую-то сортировку товаров на нашем любимом Bitrix. Бывает даже так, что при разработке с нуля нет сортировки и по цене. Но мы же не криворукие, поэтому сегодня я расскажу вам как можно сделать сортировку собственными руками, с комментариями к кускам кода и объяснением логики работы всей этой системы, что мы с вами напишем. По сути это получится не только готовое решение, но и небольшой урок, который будет понятен, надеюсь, даже новичкам.
Вообще битрикс в плане API, по моему мнению, развит гораздо лучше остальных движков, и этот его плюс мы будем немного использовать и сегодня. Итак, подробности, коды и объяснения под катом. Поехали!
1C выгрузка «Уменьшать количество при заказе»
При выгрузке каталога из 1С в инфоблок под дефолту Битрикс не ставит галочку «уменьшать количество при заказе» , в результате чего товар, которого нет на складе можно купить, и при выгрузке в Яндекс.Маркет будет стоять, что товар можно купить, а на самом деле это не так, и Яндекс.Маркет за такое может забанить ваш магазин (из-за жалоб, плюс они сами иногда обзванивают магазины, и такое встречается). Чтобы исправить эту неприятную недоработку нам необходимо в файле init.php добавить маленький кусок кода, который срабатывает при любом добавлении товара в инфоблок, а делать мы это будем через стандартное событие OnProductAdd. Подробности и код под катом!
Лицензия Navitel и смена ядра или прошивки на Android

Доброго времени суток, дорогие читатели. Бывает так, что необходимо сменить ядро на нашем любимом Android‘е. Так было и у меня. Однажды купив лицензию на Навител Навигатор (о чём честно говоря жалею до сих пор, т.к. аналоги есть и получше за те же деньги, но об этом в отдельном обзоре) я вынужден был переустановить прошивку и заодно ядро. Однако даже не подозревал, что после этого слетит регистрация, и даже не поможет файл ключа, лежащий в папке License в папке Navitel‘a. Я долго воевал с саппортом навитела, кое как смог добиться перерегистрации, но в итоге пришлось гуглить, так как мне саппорт отказался отвечать как осуществляется привязка на программном уровне. Теперь делюсь с вами информацией, которая меня теперь выручает, теперь я спокойно могу менять ядра и прошивки не боясь потерять лицензию, не боясь что придётся писать в саппорт и ждать 2 недели, пока они перепривяжут программу. Кстати, хочу заметить, разрешено в соглашении только 3!!! смены девайса и перерегистрации! Подробности под катом!
[Обзор] Конструктор игр Game Maker — Краткий обзор (вступление)
Вам наверно знакомо такое ощущение, когда все игры на компьютере надоели, и хочется сделать свою игру, выложить её в интернет и получить массу положительных отзывов.
Иногда у многих людей возникает желание создать свою компьютерную игру. Больше половины отсеиваются, даже не попробовав что-то предпринять. Другая половина всё же пробует, посещает сайты по игростроению, читает статьи, но увидев сложные скриптовые цепочки кода и такие названия, как C++, C# и т. д, бросают это занятие сразу же. И только 1-2% всё же остаются, и делают свою игру и только у 1-0,5% выходит сделать что-то стоящее. Но это касается только игр, которые делают «серьёзные» разработчики. Которые учат скриптовые языки, такие как C++, C#, Pascal и т.д. И если вы не хотите днями просиживать за компьютером, учить тонны скриптов, а затем в одиночку пытаться сделать какую-либо игру, просидев несколько месяцев, за которой вы поймёте, что без команды не куда.
[Delphi] Создание собственных дочерних классов для выполнения мультипоточной сортировки
Перед тем как приступить к рассмотрению реализации алгоритмов сортировки сформулируем два правила:
1) Все типы сортировок используют операцию сравнения.
2) Необходимо проводить сортировку любых данных. Для этого данные будут задаваться указателями, а функция сравнения будет передаваться в процедуру сортировки в качестве параметра.
Объявим специальный процедурный тип.
Все подробности под катом (+исходный код!)
Windows заблокирован, отправьте смс [Trojan Winlock] [решение]
Сегодня я расскажу о таком неприятном вирусе, который делает так, что windows заблокирован, приём почти наглухо (обычно, нельзя открыть ни диспетчер задач, ни попасть в безопасный режим, да и вообще как-то взаимодействовать с системой) и просит отправить смс или вовсе сходить к терминалу и положить деньги на счет автора этого вируса, а потом, якобы, должна наступить разблокировка. На самом деле никакой разблокировки Вашего Windows не будет и Вы просто потеряете свои деньги, поэтому крайне не рекомендуется отправлять что-либо кому-либо в любом виде.
[Семинар] [Бесплатный] Интернет-магазин: Критические факторы успеха
21 марта компания Rusonyх совместно с B2B Web Group проведут очередной бесплатный семинар на тему “Интернет-магазин: Критические факторы успеха «. Как создать успешный интернет-магазин и надежно защитить данные, используя современные технологии, Вы узнаете из докладов Николая Дингеса и Юрия Баринова.
Семинар ориентирован на Руководителей Компаний, Руководителей интернет-проектов, IT-cпециалистов, Директоров по развитию, а также на тех, кто заинтересован в создании успешного интернет-магазина и увеличении продаж через интернет. Программа семинара под катом.
[Семинар] Продающий интернет-магазин: от создания до продвижения
Начинаем цикл публикаций анонсов семинаров, связанных с разработками в IT сфере. В данном посте я рекомендую семинар, который состоится уже очень скоро, проводиться он будет в рамках обучения всех желающих в сфере интернет торговли. Как создать свой интернет магазин, как заставить магазин продавать, как привлечь покупателей в магазин и многие другие вопросы будут рассмотрены в этом семинаре.
29 марта Русоникс , B2B Web Group и Web4sale проведут эксклюзивный семинар на тему создания продающего интернет — магазина. В ходе семинара Вы узнаете от экспертов рынка электронной торговли с чего начать создание интернет-магазина, на что нужно обратить особое внимание и как продвигать интернет-магазин с минимальными затратами. Подробная программа под катом.
Добавляем копирайты в исходный код страниц блога
Я обычно стараюсь публиковать материалы блога по лицензиии CC BY-SA 3.0. Это лицензия дает право использовать любые материалы моего блога в ваших целях, изменять их как вы хотите по вашему усмотрению, НО при выполнении двух главных условий:
- Если вы где-либо публикуете мои материалы, то обязаны поставить ссылку на страницу, с которой был взят материал, т.е. на мой блог.
- Если вы меняете, преобразуете, форматируете или берёте как основу мой материал, вы можете распространять получившийся результат только по такой же лицензии, что и CC BY-SA (не забываем так же в силе пункт 1). Это даст право другим пользователям размещать материалы, и предотвратит вариант «крысятничества» в своих личных, например корыстных, целях, и может предотвратить использование материала в закрытом, недоступном для свободного использования другими, коде. Подробности про copyright под катом.
Автоматическое добавление ссылки при копировании текста с сайта
Бывает так, что создав свой блог, люди начинают копировать с него информацию. Даже если в подвале сайта, или где либо ещё, информации о том, что требуется ссылка на оригинал при копировании текста с сайта, многие просто игнорируют, некоторые забывают. Появилась идея, что при выборе текста и копировании через нажатие сочетания ctrl+C или через правую кнопку мыши в буфер копирования добавлялась ссылка на страницу с которой копируют текст. Решение было найдено через небольшой клиентский скрипт. Скрипт в полной версии поста, для просмотра нажмитее Continue Reading
Правильные окончания у исчисляемых существительных
Зачастую на сайте необходимо сделать окончания у существительных соответствующее определённому числу, то есть чтобы не было такого как «3 штука», «5 товара» и так далее. Чаще надобность в подобных вещах встречается при создании интернет магазинах, или в блогах для вывода количества комментариев. Вот и мне понадобилось сделать у клиента нормальное перечисление. Есть очень простая возможность достичь этого. Ниже есть исходник готовой функции, а так же пример использования в Bitrix.
Для этого нужно число обрабатывать простой самописной функцией:
Подбор ключевых слов
Раскрутка любого сайта всегда должна начинаться с подбора ключевых слов, по результатам поиска, по которым люди будут переходить на наш сайт через пс (поисковые системы). Именно этому посвящена наша статья сегодня. Статья нацелена на новичков в seo продвижении, поэтому если ваш уровень хоть чуточку выше среднего, то рекомендую почитать другую статью. Допустим, что у нас сайт по продаже минеральной газированной воды, то необходимо, чтобы ключевые слова были наподобие «купить минеральную газированную воду», «доставка минеральной газированной воды» и так далее. Чем выше ваш сайт будет находиться в выдаче, после того как интернет пользователь наберет в поисковике нужный нам запрос, тем больше целевых посетителей на наш сайт мы получим.
Расшариваем в Facebook нужную картинку

Случается так, что при разработке сайта нам необходимо вставить кнопку на социальную сеть и расшарить какую-то статью с нашего сайта. Например в социальную сеть Facebook. Однако при использовании кнопки Like возникает проблема определения превью картинки для статьи или ссылки, если и появляется список выбора картинок на самом фейсбуке, то зачастую нужной нам картинки там просто нет. Есть решение данной проблемы, наткнулся на него абсолютно случайно. Суть решения этого бага, его фикс (fix), если можно так назвать, в том, чтобы указать Facebook какую именно мы хотим дать ему картинку, для этого мы должны использовать мета тег в разделе тега head:
[Lifehack] 750 слов с утра — чтоб весь день думала голова

Для начала вкратце скажу что такое lifehack. По сути лайфхак это вещи, действия и прочее, что упрощает нашу жизнь в том или ином плане. Сегодня наткнулся на тему, которая хорошо подходит под данный раздел. Наткнулся на неё в блоге моего коллеги в прошлом, работали вместе. Суть данного лайфхака в том, что если с самого утра сесть и все содержимое своей головы выплеснуть на бумагу или в блог, то работоспособность в этот день станет намного выше, это я испытал на себе, об этом способе и его результатах я пишу ниже. Подробности под катом.
Общая SEO оптимизация блога на wordpress
Сегодня пойдёт речь об общей seo оптимизации блога на движке wordpress. Я буду описывать то что сделано было мной, во-первых чтобы самому не забыть и отследить результаты, во-вторых чтобы поделиться опытом с другими. Итак начнём.
Для начала нам нужно установить несколько плагинов, которые нам потребуются для seo оптимизации нашего блога. Список всех плагинов, которые являются мастхэв плагины для wordpress можно найти в этом блоге. Первый из них это All in One SEO. Данный плагин позволяет настроить title страницы, description и keywords для каждой отдельной записи, категории и страницы. Это один из самых важных плагинов для wordpress, так как он позволяет оптимизировать страницу по отдельности.
PHP скрипты в Битрикс с API без дизайна

Сегодня речь пойдёт о том, что ещё недавно меня мучило самого. Был сделан php скрипт, использующий API Битрикс, однако при выводе во включаемой области через AJAX у меня дублировался дизайн, а скрипт выводил всего лишь поисковую форму в зависимости от определённых условий. Хотя нет, объясню иначе, был сделан блок на интернет магазине, в котором выводился выпадающий список марок автомобилей, данная выборка делалась из разделов инфоблока марок и моделей машин, заносились в массив и выводились в списке. Когда пользователь выбирает из этого выпадающего списка какую либо марку то ниже должен появляться новый dropdown список, в котором делается выборка из базы определённой марки по моделям, т.е. если мы в 1 списке выбрали Renault, то появлется список где, к примеру, есть Logan, Sandero ну и прочие. Так вот проблема была в том, что подгружался контент через ajax, для того чтоб не перезагружать страницу, ну красивее так. Но если мы делаем отдельный скрипт, то возникает вопрос как использовать api 1с битрикса, но не подключать шаблон, т.к. если подключить по стандарту, то в результате выполнения скрипта и вывода его через аякс, то выведется полностью контент включая шаблон, т.е. будет ужас, можете попробовать это сделать, поймёте. Решение было найдено изучив документацию и исходники других страниц и модулей. Главная фишка заключается в том, что api битрикса подключается не так как на стандартных страницах.
Создание блога и развитие блога

Вступление
Доброго времени суток, дорогой читатель. Сегодня день рождения нового блога. На создание блога на тематику it сферы меня подтолкнуло желание поделиться с каждым своим опытом в разработках под битрикс, разработке приложений под андроид и прочие знания, которые попросту пылятся где-то в далёких уголках моей головы. На страницах моего блога будут публиковаться различные обзоры полезного программного обеспечения, различных веб движков (в частности обновления битрикс), а так же много интересных статьей и инструкций, мануалов и гайдов.
