вторник, 28 октября 2014 г.

Windows 10 Technical Preview

1 октября Microsoft представила новую операционную систему Windows, которая придет на смену Windows 8.1. Операционная система получила название Windows 10. Новая OC позиционируется как одна, общая операционная система для огромного спектра различных устройств. Сегодня, любой из вас может скачать и установить на своем компьютере или виртуальной машине предварительную версию этой операционной системы.

Ключ продукта: NKJFK-GPHP7-G8C3J-P6JXR-HQRJR


Ссылки для загрузки


Язык ISO-образ Значение хэша SHA-1
Английский, 64-разрядная (x64) версия  Скачать (3.81 GB)   EB75A3D3C0F621F175B75DC65DB036D0E00EAC43
Английский, 32-разрядная (x86) версия  Скачать (2.93 GB)  73AC23AD89489855F33CA224F196327740057E2E
Английский (Соединенное Королевство), 64-разрядная (x64) версия  Скачать (3.79 GB)   17C6CD7224D13DB61B93A4A9D38202E3A0019378
Английский (Соединенное Королевство), 32-разрядная (x86) версия  Скачать (2.94 GB)  BFF496678A09255738BFBFA14903295D55478C33
Китайский (упрощенное письмо), 64-разрядная (x64) версия  Скачать (3.96 GB)    135E3193571C5AF9FBF36D24D07B2BE7EE49B2E8
Китайский (упрощенное письмо), 32-разрядная (x86) версия  Скачать (3.05 GB)    3EE3A2033BE666BA55AFED3FCF6BB52A7C15C7CC
Португальский (Бразилия), 64-разрядная (x64) версия  Скачать (3.76 GB)     3DA91BB9EA7316F670C0A132D940FC1D58BAB296
Португальский (Бразилия), 32-разрядная (x86) версия  Скачать (2.91 GB)    611FE8F94906EFE75F64D197913344AC040DF644

* Все ссылки на оф. сайт Microsoft.

пятница, 24 октября 2014 г.

Как отключить услугу БИТ+ на МТС?

С недавнего времени стал замечать что деньги на счету телефона МТС пропадают с катастрофической скоростью, т.е. вроде и не звонил никуда, и не писал, и передача данных в смартфоне 100% была выключена - однако баланс как уменьшался, так и уменьшается. Зашел в личный кабинет, чтобы посмотреть, а вдруг у меня там платные подписки какие-то или еще что-нибудь. Посмотрел детализацию, платной оказалась услуга БИТ+ , которую сам я в явном виде не подключал (т.е. не просил мне подключить ее в офисе, не набирал никаких USSD запросов, не отправлял SMS, единственное что я делал с телефоном - это пополнял баланс). Вот скриншот из ЛК:


Как видно, стоимость услуги БИТ+ - 178 руб. в месяц (деньги списывались равными частями ежедневно) и отключить ее из личного кабинета нельзя. Доступная информация - как отключить ее с первого раза тоже не находится. Однако, так или иначе я нашел статью: Дарим вам скидку 500 рублей на Интернет, и вот в ней-то как раз описан способ отключения услуги:

Есть два способа отключения опции:

  • наберите на своем мобильном устройстве *111*365#вызов ;
  • отправьте SMS с текстом 365 на номер 111.
Собственно первый способ у меня и сработал, потом правда нужно еще подтвердить USSD запрос кнопкой 2 на телефоне. Вот скриншот детализации:


четверг, 23 октября 2014 г.

Обзор и разблокировка смартфона SMART Sprint

Сегодняшний мини-обзор скорее всего будет в виде ссылок, т.к. вся информация уже так или иначе описана на других сайтах. Поэтому повторяться лишний раз, наверное, нет смысла. Если вкратце, то буквально на днях на прилавках розничных салонов МТС незаметно появился новый смартфон. Незаметно - потому что никакого анонса заранее запланировано не было, смартфон просто завезли в точки продаж, а на официальном сайте (вернее на сайте интернет-магазина МТС) разместили информацию о нем. Поэтому и продавцы, и покупатели, можно сказать до последнего момента были не в курсе о его появлении. Смартфон SMART Sprint продолжает линейку бюджетных смартфонов от МТС. Отличительной особенностью этого аппарата - является 4.5" экран (!), что выделяет его из всех моделей бюджетного сегмента. При этом цена достаточно невысока - 3490 руб.

"Новинка построена на базе двухядерного чипа от MediaTek - MediaTek MT6572 с частотой 1.3 GHz. Фактически, аналогичный чип использовался и в "младшей модели" оператора - смартфоне МТС 982О от Star Digital. Откровенно говоря, даже интерфейс программного обеспечения SMART Sprint и МТС 982О - похожи как две капли воды. 4.5" экран обладает разрешением 540x960 точек (против 480 x 800 у МТС 982О) и визуально оставляет довольно приятное впечатление. Что касается остальных характеристик новинки - SMART Sprint оснащен 512 Mb оперативной памяти (RAM) и 4 Gb встроенной памяти. Однако, пользователю, для хранения данных и приложений доступно всего-лишь 1.2 Gb, при этом, естественно, поддерживаются microSD карты памяти объемом до 32 Gb. Что касается камер - тут тоже все стандартно. В аппараты их две - фронтальная, с разрешением 0.3 MPix, и тыловая (основная) с разрешением 5 Mpix. Рядом с "глазком" камеры на задней крышке аппарата расположена "светодиод" вспышки." (с)  http://unlockclub.ru/news/obzor-i-razblokirovka-smartfona-smart-sprint/

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

Как и все брендированные телефоны, SMART Sprint по-умолчанию является залоченным на МТС (SIM-LOCK МТС), т.е. при попытке вставить туда SIM-карту другого оператора - телефон запрашивает код разблокировки сети. Производитель (компания Fukda Telecom Group Limited) предусмотрел штатную возможность разблокировки аппарата при помощи ввода NCK-кода (код разблокировки сети). NCK-код для SMART Sprint представляет собой последовательность из 12 цифр и уникален для каждого аппарата. Процесс ввода кода разблокировки в телефон и его работоспособность с SIM-картой другого оператора вы можете увидеть в следующем видео:


Как видно, после ввода кода разблокировки телефон успешно регистрируется в сети Билайн. Как получить код разблокировки подробно описано в этой статье - Обзор и разблокировка смартфона SMART Sprint на UnlockClub'е. Также, на их форуме есть специальная тема, посвященная этому телефону - Смартфон SMART Sprint.

Для любителей различных модификаций - также есть хорошие новости, root и cwm для данного телефона существуют:


Однако пока их не спешат выкладывать в public, и причина вообщем-то банальна. Почему-то в последнее время никто не ценит чужой труд, ведь дождаться пока кто-то найдет решение, а потом просто "скопипастить" его результаты к себе на страницу / сайт / блог - куда проще, чем сделать что-то самому. Поэтому пока решение не выкладывается в public (следить за положением дел можно тут). Даже интересно, через какое время аналогичное решение появится на 4PDA и других ресурсах. Дата выпуска CWM - как следует из форума UnlockClub'а - 23.10.2014 00:17:59 ;) Посмотрим.

Обновлено (21.12.2014): Как получить root на МТС Smart Sprint? - инструкция по установке CWM и получению root на МТС Smart Sprint.

Что же касается субъективных впечатлений от использования SMART Sprint - могу сказать следующее. Он хорош за свою цену. Безусловно радует 4.5" экран, когда-то я пользовался Мегафон 4G Turbo и успел привыкнуть к большому экрану, в SMART Sprint - он также не разочаровывает, особенно учитывая цену девайса в 3490 руб. Телефон оставляет в руке приятное ощущение, задняя крышка покрыта каким-то "прорезиненным составом" (по-крайней мере так кажется наощупь), держать телефон в руке приятно, хотя и понимаешь что это "пластик", но в то же время достаточно "мягкий" и приятный. Из того что не понравилось - 512 Mb RAM мало. Аппарат не тормозит, но в то же время и не пробовал пока запускать на нем какие-либо серьезные приложения. Серфить по интернету в Google Chrome, пользоваться приложением ВК, отправлять почту, слушать музыку - с этими задачами он вполне справится (ну а для чего еще нужны бюджетные смартфоны?). Однако, что будет если запустить на нем что-то ресурсоемкое - это вопрос. Навигацию в реальных условиях пока опробовать не удалось, но GPS Test определил координаты даже в здании, а это говорит о многом. Резюмируя все вышесказанное - если вы давно хотели смартфон с большим экраном, но при этом цены на модели именитых брендов кажутся вам заоблачными - то SMART Sprint хороший вариант.

воскресенье, 19 октября 2014 г.

Google Chrome 38.0.2125.104 перестал работать после обновления Windows

Сегодня, после установки очередной пачки обновлений под Windows 8 (именно Win8, а не Win 8.1) перестал работать Google Chrome (32-bit). Версия, естественно, была установлена последняя - 38.0.2125.104. Попытка локализовать проблему не увенчалась успехом. Т.е., естественно, были удалены все плагины / расшиерения, затем был удален профиль пользователя, т.е. полностью папка %userprofile%\appdata\local\google, затем произведена полная чистка реестра и переустановка Google Chrome "с нуля". Т.е. фактически чистая установка. Ничего не помогло. При попытке запуска Chrome - видим ситуацию показанную на картинке. Т.е. сначала ошибка "Произошел сбой Google Chorme. Перезапусить?", ну а затем стандартное виндовое сообщение о том что программа не работает. Честно говоря - перепробовал все что можно. Кстати, в релиз ведь вышла 64-битная версия Chrome - попробовал установить ее. Так вот 64-bit'ный Chrome  запускался, но работать отказывался. Т.е. появлялось окно с Google Chrome, но при попытке зайти, например, в настройки, т.е. chrome://settings - ничего не происходило. В качестве временного решения была предпринята установка Chrome Canary, версия 40.0.2193.0 canary - заработала без сбоев.


Интересны отзывы других пользователей. А у вас после последних обновлений Windows последний Chrome нормально работает? Ситуация может быть специфической, т.е. у части пользователей может не работать, как у меня, у части работать. Но как-то локализовать проблему все-таки нужно. Пока пользуюсь Canary, если удастся "победить" проблему с обычным Chrome - обязательно отпишусь.

среда, 15 октября 2014 г.

FTP Server для Android или переносная WiFi флешка.

В этой заметке я расскажу вам про FTP Server на Android или про то как из вашего любимого Android устройства сделать переносную WiFi флешку. Предыстория написания этой заметки банальна. Попался мне компьютер с установленной Windows 98, задача была крайне простой - скопировать несколько папок с рабочего стола на другой ПК или флешку. Т.к. флешку, к сожалению, Windows 98 не увидела по причине отсутствия драйверов, а к сетевым шарам в рабочей группе она коннектиться не хотела, да и разбираться было некогда, выбор пал на альтернативные способы, чем собственно и стал FTP (ПК с Windows 98 был подключен к маршрутизатору с WiFi точкой доступа, собственно, к той же самой точке доступа и был подключен мой телефон). Т.к. консольный ftp.exe есть практически в любой версии ОС Windows. Но ближе к делу. Итак, устанавливаем на ваш Android телефон FTPServer от Andreas Liebig. Приложение это бесплатное, имеет маленький размер и не требует root, т.е. из серии - установил и работай.

После установки FTPServer в телефон нам необходимо настроить его. Прописать имя пользователя и пароль, которые будут использоваться для доступа к FTP Server'у, указать порт (я выбрал 5000, обратите внимание, что т.к. приложение не требует root, до на стандартном для FTP сервера 21-ом порту оно работать не сможет, т.е. нужно выбрать любой номер порта больше 1024). Установить галочку "Только папка по-умолчанию" и назначить Путь по-умолчанию (у меня это был /sdcard/). После чего перейти на основной экран приложения и нажать кнопку Запустить FTP:


Как мы видим, сверху отображены IP и порт нашего FTP Server'а. Настраиваем любой FTP клиент (я, например, воспользовался встроенным плагином для Far Manager) на использование нашего FTP Server'а:


Соединяемся, и закачиваем / скачиваем любые файлы с ПК на SD-карту телефона. Профит. Кстати,  FTPServer поддерживает UTF-8, поэтому проблем с кодировкой кириллических названий - нет как класса, единственное, в настройках FTP клиента необходимо выбрать кодировку используемую сервером как UTF-8. Еще один положительный момент - в самом FTP сервере можно задать список разрешенных WiFi сетей для доступа, т.е. к примеру, его можно настроить так, чтобы в домашней / офисной сети FTP Server был доступен, а при подключении к любой другой сети - нет. Собственно, использование FTP Server'а - один из самых простых способов получить / передать файлы на телефон "по воздуху", не используя при этом какого-либо специализированного ресурсоемкого софта. Ну а если, к примеру, настроить на ПК какую-нибудь утилиту типа FTPDrive, то данный FTP можно будет использовать как отдельную букву диска в Проводнике. На этом пожалуй всё ... ) Вопросы, комментарии, предложения приветствуются.




понедельник, 13 октября 2014 г.

Как вставить подсветку синтаксиса в шаблон Google Blogger?

Озадачился я тут вопросом как вставить подсветку синтаксиса в шаблон Google Blogger. Решение было найдено в виде highlight.js и Хостинг JavaScript-библиотек от Яндекс. В шаблон Google Blogger записываем следующие строки:

<!-- Code HighLight -->
<script src="http://yastatic.net/highlightjs/8.2/highlight.min.js"></script>
<link rel="stylesheet" href="http://yastatic.net/highlightjs/8.2/styles/github.min.css" />
<script type="text/javascript">hljs.initHighlightingOnLoad();</script>

И наслаждаемся результатом, который при просмотре выглядит вот так:


Highlight.js, как и другие подобные скрипты, использует вариацию тега pre, но в данном случае вместе с тегом code, и автоматически понимает язык выкладываемого кода:

<pre><code>...</code></pre>

Т.е. весь код, в котором нужно выполнить подсветку синтаксиса необходимо размещать на месте троеточия, внутри обертки из pre и code.

p.s. Для примера, нижеследующий PHP-код в этом блоге, как раз подсвечивается с помощью highlight.js:

<?php phpinfo(); ?>

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

воскресенье, 12 октября 2014 г.

Alcatel One Touch POP 2 (4.5) OT-5042

Некоторое время назад я писал о распространении 4G (LTE) сетей в регионах. Так, например, в нашем - LTE-первопроходцем стала компания Мегафон, а затем и МТС объявил о запуске LTE-сети. Но речь пойдет не об этом, а об аппаратах, предназначенных для использования в 4G сетях.

Что касается компании Мегафон - то в свое время она представила первый бюджетный LTE-смартфон - Мегафон 4G Turbo, который можно было приобрести за 4990 руб., затем МТС анонсировал продажи МТС 978 (Alcatel OT-6035) и, вот теперь, в интернет-магазине МТС появился никем не замеченный анонс Alcatel One Touch POP 2 (Alcatel OT-5042).

Alcatel One Touch POP 2 - если я не ошибаюсь, это первый двухсимочник с LTE появившийся на российском рынке.

Alcatel OT-5042 / Alcatel OneTouch Pop 2 - второе поколение линейки OneTouch Pop, теперь и с LTE-модулем. Основным новшеством во второй серии гаджета является обновление процессора и модуля связи. В качестве CPU в OneTouch Pop 2 используется Qualcomm Snapdragon 410, процессор, поддерживающий все LTE стандарты и обладающий 64-х битной архитектурой. Кроме 64-разрядного Qualcomm Snapdragon 410 с четырьмя ядрами Cortex-A53, работающими на частоте 1,2 ГГц смартфон может похвастаться графическим ускорителем Adreno 306, способным воспроизводить видео в формате Full HD 1080p. Также смартфон оснащен 1 Gb оперативной памяти (RAM) и 8 Gb внутренней памяти, часть из которых используется для хранения пользовательских данных. Приятный FWVGA экран размером 4.5" с разрешением 854x480 пикселей, а также две камеры, тыловая - 5 Mpix, фронтальная - 0.3 Mpix, в сочетании с перечисленными выше характеристиками и относительно невысокой ценой (5 990 руб.) делают его достойным кандидатом для замены 3G-смартфону.

Кстати, надо отметить что Alcatel планирует выпускать данный аппарат в нескольких версиях - c Android и Windows Phone на борту, так что у поклонников ОС от Microsoft появится возможность использовать это устройство в "привычном окружении". Здесь надо отметить, что лишь некоторые производители выпускаются версию одного и того же гаджета с разными операционными системами, и, что радует, Alcatel в их числе. Версия же смартфона, поступившего в продажу в МТС базируется на Android 4.4 KitKat.


Технические характеристики Alcatel One Touch POP 2:

Дисплей
4.5-дюйма, 480 x 854 пикселей, 16M цветов, мультитач.


Процессор
Qualcomm Snapdragon 410 MSM8916 чипсет (quad-core 1.2 GHz ARM Cortex-A53 MPcore, Adreno 306 GPU)

Память
1 GB RAM, 8 GB внутренней памяти (из которой пользователю доступно около 5Gb), поддержка microSD до 32 Gb.

Операционная система
Android 4.4.2 (KitKat)

Камера
5.0 MPix (2592 x 1944 пикселей) тыловая камера.
VGA (640 x 480 pixels) фронтальная камера.

Передача данных / поддерживаемые частоты
GPRS, EDGE, UMTS, HSDPA, HSUPA 5.76 Mbps, HSPA+ 42 Mbps, LTE Cat4 150 Mbps downlink / 50 Mbps uplink (LTE-A), Wi-Fi 802.11 b/g/n, Wi-Fi Direct, Wi-Fi hotspot, NFC, DLNA, Bluetooth v4.0 с A2DP, Infrared, microUSB v2.0

  • 2G: GSM 850 / 900 / 1800 / 1900 MHz
  • 3G: UMTS 850 / 900 / 1900 / 2100 MHz (OT-5042A, OT-5042X, OT-5042W, OT-5042G)
  • UMTS 2100 / 800 MHz OT-(5042F)
  • 4G: LTE 850 / 1700 / 1900 / 2100 / 2600 MHz (OT-5042A)
  • LTE 800 / 900 / 1800 / 2100 / 2600 MHz (OT-5042X)
  • LTE 700 / 1700 / 1900 / 2100 / 2600 MHz (OT-5042W)
  • LTE 800 / 1800 / 2100 MHz (OT-5042F)
  • LTE 700 / 900 / 1800 / 2100 / 2600 MHz (OT-5042G)

Батарея
Lithium-ion 2000 mAh

Размеры и вес
132.5 x 65.4 x 9.95 мм, 147 грамм.

Доступные цветовые исполнения
Lemon Yellow, Lavender, Jade Green, Aqua Blue, Cozy Red, Volcano Black, Platinum Silver, White, Ash Gray

Полезные ссылки:

воскресенье, 5 октября 2014 г.

Как разблокировать Oysters T72M?

Сегодня, по традиции, мы продолжим обзор новостей мира мобильной связи, и, как это было и ранее, вновь обратимся к ресурсу UnlockClub.Ru. Недавно на этом сайте появилась статья - Обзор и разблокировка планшета Oysters T72M, в которой дан небольшой обзор, а также описан метод разблокировки этого планшета от оператора. В данном случае примечательно то, что на официальном сайте оператора информация о том что этот планшет предназначен только для работы в сети Мегафон попросту отсутствует (по-крайней мере на момент написания этой заметки). Однако, на практике оба слота планшета "залочены" именно на этого оператора и при попытке вставить SIM-карту отличную от Мегафон - планшет запрашивает код разблокировки. Ниже я сделал небольшую подборку полезных ссылок по Oysters T72M:

Результат теста Antutu Benchmark 5.1:


Результаты теста Vellamo Benchmark (Browser - 1453, Multicore [Beta] - 882, Metal - 543):




пятница, 3 октября 2014 г.

Битрикс. Сортировка элементов инфоблока в $arResult.

И снова мы возвращаемся к Битриксу ;) Чувствую про него будет еще десяток постов. Во время работы над проектом всегда возникают какие-то вопросы, требующие либо нетривиального подхода, либо поиска информации. Естественно, все они решаются, и вот методом их решения, как раз и хочется "поделиться с потомками". Мало ли кому будет полезным. Итак представьте, что у нас есть некий массив $arResult['ELEMENTS'] полученный из элементов инфоблока. Чтобы пример не был таким абстрактным, в качестве примера возьмем компонент bitrix:iblock.element.add.list, который выводит список Список своих элементов с привязкой к пользователю. Т.е. к примеру, если у вас "Доска объявлений", то у пользователя в личном кабинете должен быть доступен список объявлений которые он подавал. Но вот беда ... компонент выводит элементы пользователя в $arResult['ELEMENTS'], который с помощью свойств компонента никак нельзя ни отсортировать, ни изменить и т.п. Что несколько неудобно. Например, нам нужно вывести все объявления пользователя, начиная с последнего ...

На помощь нам придет result_modifier.php и Класс для сортировки массива, usort [php]. Исходный код класса:

class CCabinet_SortObject {

 function __cmp_ValueOf($a, $b, $name, $order) {
  if(is_set($a[$name]) && is_set($b[$name])) {
   if($order == 'ASC')
    return ($a[$name]<$b[$name])?true:false; 
   elseif($order == 'DESC')return ($b[$name]>$a[$name])?false:true;
  }
 }

 function cmp_STATUS_ASC($a, $b) {
  return CCabinet_SortObject::__cmp_ValueOf($a, $b, "STATUS", "ASC");
 }

 function cmp_STATUS_DESC($a, $b) {
  return CCabinet_SortObject::__cmp_ValueOf($a, $b, "STATUS", "DESC");
 }

 function cmp_NAME_ASC($a, $b) {
  return CCabinet_SortObject::__cmp_ValueOf($a, $b, "OBJECT_NAME", "ASC");
 }

 function cmp_NAME_DESC($a, $b) {
  return CCabinet_SortObject::__cmp_ValueOf($a, $b, "OBJECT_NAME", "DESC");
 }

 function cmp_CITY_ASC($a, $b) {
  return CCabinet_SortObject::__cmp_ValueOf($a, $b, "CITY_NAME", "ASC");
 }

 function cmp_CITY_DESC($a, $b) {
  return CCabinet_SortObject::__cmp_ValueOf($a, $b, "CITY_NAME", "DESC");
 }

 function cmp_DATE_DESC($a, $b) {
  if ($a["DATE_CREATE"] == $b["DATE_CREATE"]) {
         return 0;
     }
     return ($a["DATE_CREATE"] > $b["DATE_CREATE"]) ? -1 : 1;
 }

 function cmp_DATE_ASC($a, $b) {
  if ($a["DATE_CREATE"] == $b["DATE_CREATE"]) {
         return 0;
     }
     return ($a["DATE_CREATE"] < $b["DATE_CREATE"]) ? -1 : 1;
 }

}

Автор приводит такой пример вызова:

usort($arResult['ITEAM'], array("CCabinet_SortObject", "cmp_".$arParams['SORT_BY']."_".$arParams['SORT_ORDER']));

Но нам нужно отсортировать объяления по дате создания. Поэтому внутри result_modifier.php мы поступаем следующим образом:

usort($arResult['ELEMENTS'], array("CCabinet_SortObject", "cmp_"."DATE"."_"."DESC"));

В результате объявления отсортированы у нас по дате. Профит. Хочется сказать спасибо автору блога yunaliev.ru за сэкономленное время и универсальный метод.


четверг, 2 октября 2014 г.

Отправка RAW HTTP Post средствами Битрикс API

В последнее время так или иначе приходится касаться разработки на Битрикс. И сегодня мы с вами рассмотрим как отправить RAW HTTP Post средствами Битрикс. Для начала давайте разберемся, что же такое HTTP RAW Post? Чтобы не вдаваться в подробности, просто скажу, что это то что можно получить с помощью $HTTP_RAW_POST_DATA или php://input. Предположим у нас есть такой вот скрипт receiver на стороне сервера, который сохраняет http raw post в текстовый файл (пример, естественно, просто учебеный). Назовем его receiver.php:

<?php
$data = $HTTP_RAW_POST_DATA;
//$data = file_get_contents("php://input");
file_put_contents("receiver.log",$data,FILE_APPEND);
echo "<result>Ok</result>\r\n";
?>

Для чего такая штука может использоваться? Ну к примеру на вход этому скрипту подаются некие XML данные, он их обрабатывает и отвечает тоже XML (повторюсь, пример учебный, не надо говорить про схемы, отсутствие версии XML и т.д. и т.п.). Итак, есть такой receiver и нужно послать к нему запрос из Битрикса. Сделать это можно двумя способами:

  • Использование класса CHTTP (см. /bitrix/modules/main/tools.php), но как следует из комментариев в этом модуле - он deprecated.
  • Поэтому вторым вариантом является использование Bitrix\Main\Web\HttpClient, про HttpClient можно "покурить" тут.
Перейдем от слов к делу, с помощью CHTTP можно сделать так:

$post_url = "http://localhost/receiver.php";
$http = new CHTTP();
$arUrl = $http->ParseURL($post_url, $arUrl);
if ($http->Query('POST', $arUrl['host'], $arUrl['port'], $arUrl['path_query'], $xml, '', "application/octet-stream", false)) 
 { $arResult["TEST"] = $http->result; }
else    { $arResult["TEST"] = "BAD"; }

Где в $xml содержатся наши данные, которые отправляются receiver'у. Обратите внимание на параметры Query. Конкретнее на post_content_type, он у нас "application/octet-stream". В противном случае POST был ушел с application/x-www-form-urlencoded - а это уже совсем другая история.

Ну и второй вариант реализации с помощью HttpClient, тут все куда проще на первый взгляд, но без "курения" исходников до этого решения можно доходить достаточно долго:

$post_url = "http://test.local/receiver.php";
$http = new \Bitrix\Main\Web\HttpClient();  // http://bxapi.ru/?module_id=main&class=HttpClient
$http->setHeader("Content-Type","application/octet-stream");
if ($http->post($post_url,$xml))
      { $arResult["TEST"] = $http->getResult(); }

И в том, и в другом варианте в $arResult["TEST"] мы получим <result>Ok</result>. Собственно как и было задумано. Надеюсь, что эта заметка оказалась хоть кому-то полезной ;)

p.s. Напоследок ... можно долго изобретать велосипеды в своих компонентах и тысячи раз писать кривые реализации одних и тех же действий. Но зачем? В API Битрикса много чего реализовано (и много чего, кстати, остается за кадром для начинающих разработчиков, т.к. все обычно смотрят документацию на оф. сайте, и редко кто заглядывает в исходники CMS и смотрим как реализованы те или иные модули, а там, между прочим, есть чему поучиться). В том же  /bitrix/modules/main/tools.php есть, к примеру, функция check_email для проверки валидности адреса электронной почты, функция формирования списка выбора <select>...</select> из массива и много чего еще. Вообщем перед тем как кодить что-то свое, всегда нужно ознакомиться с тем что уже есть )) 

Стандарты разработки на платформе 1С-Битрикс

(с) https://github.com/uniplug/bitrix-style-guide - оригинал данного руководства. Возможно кому-то окажется полезным.

В данном руководстве описаны рекомендуемые техники при разработке на платформе 1С-Битрикс / 1C-Bitrix (далее - Битрикс). Если вы заметили ошибку и хотите внести исправление или дополнение, пожалуйста, не стесняйтесь делать pull request или связываться напрямую.
Приветствуется любая помощь.

PHP

  • Код PHP должен быть написан в соответствии со стандартом PSR-1.
  • Стиль написания кода должен соответствовать стандарту PSR-2.
  • В конечном итоге придерживаемся правил форматирования (ядро D7) от разработчиков системы.

Оформление исходного кода

  • Используйте кодировку UTF-8 без BOM для файлов с исходным кодом.
  • Используйте Unix-style окончания строк LF. Никаких CR+LF.
  • Используйте сокращенные теги <? и <?=.
    // bad
    <?php echo .. ?>
    
    // good
    <?= .. ?>
    
  • Используйте ТАБ для каждого отступа. Никаких пробелов для блоков кода.

Общие положения

  • При добавлении кода в файл init.php группируйте код в классы и выносите их в отдельные файлы.
  • При подключении файлов используйте только функции Битрикса. Цитата:
    Поддержка Bitrix Framework русских (и прочих) символов в названиях публичных файлов накладывает определённые ограничения на работу: недопустимы прямые вызовы
    • к файлам, имена которых выбираются пользователями,
    • к папкам, имена которых выбираются пользователями,
    • к файлам и папкам, которые могут лежать в папках, имена которых выбираются пользователями. Недопустимы вызовы любых прямых методов работы с файловой системой: include, require, fopen, filesize, unlink, file_exists и т.д. http://dev.1c-bitrix.ru/api_help/main/reference/cbxvirtualio/index.php
    init.php
    // bad
    // SomeClass
    include('../some_file.php');
    
    //good
    // SomeClass
    $APPLICATION->GetFileContent('../some_file.php');
    
  • Не используйте цифровые значения в GetList, GetByID и схожих методах, которые принимают различные ID. Создайте файл со всеми необходимыми константами и используйте их имена.
    // bad
    $comments = CIBlockElement::GetList(Array(), Array("IBLOCK_ID" => 12));
    
    1. У каждой константы должно быть говорящее имя и комментарий.
    2. Файл constants.php:
      // ИБ с комментариями пользователей
      const COMMENTS_IBLOCK_ID = 12;
      
    3. Подключите этот файл в init.php
      //Константы проекта
      $APPLICATION->GetFileContent($_SERVER["DOCUMENT_ROOT"] . '/bitrix/php_interface/includes/constants.php');
      
    4. Используйте константу
      $comments = CIBlockElement::GetList(Array(), Array("IBLOCK_ID" => COMMENTS_IBLOCK_ID));
      
  • Используйте Bitrix IBlock Tools, обсуждение.
  • При выборках данных (например, GetList) обязательно указывайте поля, которые нужны для дальнейших манипуляций, кроме случаев, когда нужны все поля:
    // good - Обязательно указывайте поля для выборки
    $arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM");
    ...
    $res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
    
  • При необходимости выбрать несколько элементов по ID, обязательно используйте GetList вместо GetByID:
    // bad
    $element1 = CIBlockElement::GetByID(1);
    $element2 = CIBlockElement::GetByID(2);
    
    // good
    $elements = CIBlockElement::GetList(Array(), Array(1, 2));
    
  • Не используйте прямые запросы к базе данных, вся работа только через API.
  • Если к файлу не предусмотрен прямой доступ через WEB, в первой строке файла добавьте:
    <?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();?>
    

Отладка

Важно
Логирование замедляет работу системы и может являться брешью в безопасности

Вывод на экран

Вывод в файл

  1. Определите константу LOG_FILENAME в файле /bitrix/php_interface/dbconn.php, задавая путь к лог-файлу за пределами DOCUMENT_ROOT.
    // определяем константу LOG_FILENAME, в которой зададим путь к лог-файлу
    define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/../log.txt");
    
  2. Отправьте сообщение в лог
    AddMessage2Log("Произвольный текст сообщения", "module_id");
    
    Пример:
    AddMessage2Log( print_r($arResult, true) );
    

SQL

  • Определите переменную DBDebugToFile для логирования всех SQL запросов.
    $DBDebugToFile = true;
    

Работа с компонентами

  • Шаблонам компонентов давайте осмысленные названия и в каждом проекте придерживайтесь общего стиля. Например, Раздел/страница_сайта.Название.Тип
    Примеры:
    • index.user.auth
    • profile.orders.list
    • cart.products.additional
  • Стандартные компоненты не модифицируются. Если возникнет такая необходимость — создайте копию компонента в своем пространстве имен в каталоге /bitrix/components/.
  • РЕКОММЕНДУЕТСЯ все шаблоны компонентов сохранять в шаблоне .default в каталоге /bitrix/templates/.default/.
  • НЕ РЕКОМЕНДУЕТСЯ делать любые манипуляции с данными в файле template.php. При необходимости правки логики стандартных компонентов, но недостаточной для того, что делать свой используются файлы result_modifier.php и component_epilog.php
  • РЕКОМЕНДУЕТСЯ использовать файлы style.css и script.js в шаблонах только если они переопределяют стандартное поведение схожих элементов. РЕКОМЕНДУЕТСЯ оставить комментарий об этой особенности.

Кэширование

  • Кэширование компонентов не отключается. Практически не существует задач, которые нельзя решить с включенным кэшированием.
    Исключение:
    • Во время разработки полностью отключайте кэширование - это съэкономит вам много времени.
  • Подключайте js и css файлы только через предназначенный для этого API:
  • Если файлы ресурсов подключены неправильно, высока вероятность, что браузеры начнут их активно кэшировать. Не забывайте про специализированные расширеня для браузеров:
  • НЕЛЬЗЯ вставлять код вызова компонента внутрь файла template.php другого компонента.
    Это противоречит идеологии разделения даннах и представления (см. выше) и влечет двойное кэширование.

Работа с шаблонами

  • РЕКОМЕНДУЕТСЯ использовать минимальное количество шаблонов.
  • РЕКОМЕНДУЕТСЯ подключать header.php и footer.php из одного места для всех шаблонов, если это позволяет дизайн и верстка.
  • РЕКОМЕНДУЕТСЯ общие картинки, скрипты и стили шаблонов сохранять в одном месте, например, в /bitrix/templates/.default/.

Структура шаблона

  • В каталоге шаблона остаются только необходимые для Битрикс файлы - header.php, footer.php, styles.css и т.д.
  • Включаемые файлы располагаются в каталоге includes
  • Все дополнительные файлы (скрипты, изображения и т.д.) располагаются в каталоге assets:
    • js - свои скрипты и однофайловые библиотеки
    • css - свои стили и однофайловые библиотеки
    • images - изображения, спрайты, иконки
    • fonts - шрифты
    • остальные библиотеки и фреймворки располагаются в каталогах, названия которых совпадают с названием и версией библиотеки, при этом сохраняется внутренняя структура дистрибутива.
      • Документацию, примеры и доп. файлы можно удалить.
Пример:
/local/templates/<название_шаблона>/
├── header.php
├── footer.php
├── styles.css
├── templaye_styles.css
│
├── components/
|   ├── ..
│
├── assets/
│   ├── js/
|   |   ├── custom.js
|   |   ├── jquery.dataAttributeEvents.js
│   |
│   ├── css/
|   |   ├── ..
│   |
│   ├── images/
|   |   ├── ..
│   |
│   └── bootstrap-3.0.0/
│       ├── js/
│       ├── css/
  ...

Работа с инфоблоками

  • Названия свойств инфоблоков должны быть:
    1. в верхнем регистре;
    2. осмысленными (используйте связку сущность_наименование);
    3. слова разделаются подчеркиванием.
    Пример:
    • Имя пользователя: USER_NAME
    • Валюта заказа: ORDER_CURRENCY
    • Список заказов: ORDER_LIST