Архив метки: избранное

Arduino Uno краткий обзор..

Ну на самом деле таких обзоров в «интернетиках» пруд пруди.. Ну чтож, внесу и я свою лепту. Тем более делаю это больше «для себя», чтоб не забыть ежели чего ключевые моменты.

Итак, платформа Arduino это несколько наборов микросхем с разными параметрами, которые могут модульно расширяться. Модулей для этой платформы меряно-не меряно, на любой каприз. Например можно подключить модуль распознавания речи, фотокамеру, mp3 проигрыватели и еще много что. К ним, как и к самой платформе Arduino можно подключать большое разнообразие датчиков, коих продается так-же неверноятно много. Тут и датчики движения, и температуры и влажности и давления и тд. и т.п. Еще можно подключать разнообразные дисплеи, шаговые и не очень двигатели, силовые ключи.

Читать далее Arduino Uno краткий обзор..

Зоки и Бада. Аудиокнига с картинками.

В зимние каникулы наконец нашлось время доделать «интерактивную» озвученную книжку с картинками по мотивам сказки «Бада и Зоки». Версию apk под андроид можно скачать здесь. Просто звук mp3 можно скачать здесь.

Если вам понравилась эта книга, и у вас есть бумажная книга «Бада и Зоки идут в Школу» — вы можете качественно отсканировать её, выслать её мне и возможно я соберусь сделать так-же и вторую часть..

 

Получение данных из Active Directory посредством PHP

Сам за себя лучше всего расскажет мой кусок кода. Все сдобрено максимально большим количеством комментариев. По формату построения LDAP запросов полезно почитать вот этот мануал. Ничего толковее к сожалению найти не смог.

Вот результат:

Снимок-12Вот код:

$ldap_user='gribov.p';
$ldap_pass='ргшкуцудцс';
$filter = "(telephonenumber=*9657400222*)";   // устанавливаем фильтр выборки из AD
//(company=*Русский Север*)
$attr=array("displayname","useruid2","title","telephonenumber","department","mail","jpegphoto","homephone"); // устанавливаем какие поля нам нужно получить из AD

// устанавливаем соединение с ldap сервером
$ldap_con = ldap_connect($cfg->ldap) or die("Could not connect to LDAP server.");
echo "-Соеденяюсь с LDAP сервером: OK</br>";

// Устанавливаем флажки протокола
ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);  // AD Windows 2003 и выше
ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0);         //Определяет, следовать ли автоматически рефералам, возвращенным сервером LDAP. Зачем нужно - не понятно

// авторизуемся в AD
$dn="$cfg->domain1\\$ldap_user";
$ldapbind = ldap_bind($ldap_con, $dn, $ldap_pass) or die("LDAP bind failed...");
echo "-Авторизуюсь на LDAP сервере: OK</br>";

// Пытаемся чтото получить из AD
$base_dn = "DC=$cfg->domain1, DC=$cfg->domain2";  
$search=ldap_search($ldap_con, $base_dn, $filter,$attr);  // Ищем эти поля, получаем ссылку на результат
$number_returned = ldap_count_entries($ldap_con,$search); // Получаем количество записей
echo "-Получаю записи из AD: $number_returned</br>";
$info = ldap_get_entries($ldap_con, $search);             // получаем результат в переменную $info

// дальше парсим полученный массив
// Результирующий массив с пользователями из AD
// "displayname","useruid2","title","telephonenumber","department","mail","jpegphoto","homephone"
  for ($i=0; $i<$info["count"]; $i++) {             
        $res=$info[$i];
        $m_name=$res["displayname"];
        echo "Имя: $m_name[0]</br>";
        $m_tab=$res["useruid2"];
        echo "Табельный: $m_tab[0]</br>";        
        $m_title=$res["title"];
        echo "Должность: $m_title[0]</br>";        
        $m_tel=$res["telephonenumber"];
        echo "Телефон: $m_tel[0]</br>";        
        $m_dep=$res["department"];
        echo "Департамент: $m_dep[0]</br>";        
        $m_mail=$res["mail"];
        echo "Email: $m_mail[0]</br>";        
        $m_photo=$res["jpegphoto"];
        $m_hometel=$res["homephone"];
        echo "Дом.тел: $m_hometel[0]</br>";               
        file_put_contents('img.jpg',$m_photo[0]);
        echo "<img src='img.jpg'>";                       
         echo "<hr>";       

    };