Gammu – софт для работы с телефоном (синхронизация, бэкап данных, доступ к камере телефона, радио и т.д.)
Для получения свежих версий ПО советую добавить репозиторий разработчика:
1 2
| deb http://ppa.launchpad.net/nijel/ppa/ubuntu lucid main
deb-src http://ppa.launchpad.net/nijel/ppa/ubuntu lucid main |
В моем случае это версия Ubuntu 10.04 – Lucid. (меняете на свою).
Приведу пример конфига gammu при подключении по bluetooth (тип соединения Serial Port): Читать далее →

dharmaencoder
Хочу обратить внимание на этот новый проект под названием
DharmaEncoder. Очень удобный энкодер/декодер написанный на python с использованием PyGtk, который в данный момент поддерживает:
- URL
- Full Url
- Base64
- Hex
- MD5 Hash
- SHA1 Hash
- SQL Char String
- Unicode %u00
- и т.д.

topng
Иногда приходится конвертировать изображения с одного формата в другой, основные это JPEG и PNG.
Добавим сценарии в контекстное меню Nautilus при клике правой кнопки на файле.
Читать далее →

gps_exif
Многие мобильные телефоны оснащенные GPS навигаторами вставляют информацию о местонахождении в фотографию(т.е. в EXIF).
На написание этого скрипта подвигло выступление одного хакера создавшего сайт мониторинга местоположения через сервис Twitter’a.
В общем для работы скрипта необходимо установить модуль Image::EXIF (sudo cpan -i Image::EXIF), возможно, также придется установить и другой пакет, если первый не будет собираться (sudo cpan -i YAML возможно еще и sudo apt-get install libexif-dev), на выходе получаем собственно сами координаты и название места, где было сделано фото. Читать далее →
Для этого нам понадобится bluetooth manager – blueman.
Консольная звонилка wvdial – есть в пакетах sudo apt-get install wvdial.
Первое что делаем – это подключаем телефон в режиме DUN (Dial-Up Network). Пропущу всякие мелочи типа ввода PIN’a, разберетесь сами, ничего сложного.
Далее нам понадобиться создать простой конфиг для wvdial.
1 2 3 4 5 6 7 8 9
| [Dialer Defaults]
Modem = /dev/rfcomm0
Init1 = ATZ
Init2 = AT+CGDCONT=1,\"IP\",\"www.djuice.com.ua\"
Phone = *99***1#
Username = 1111
Password = 1111
ISDN = no
New PPPD = yes |
Конфиг для ОПСОСа DJuice. Настройки своего оператора думаю найти не сложно на официальном сайте. Читать далее →
Chapter [0x01] Для затравки.

mocp conky
Вот к такому виду мы придем в конце этого руководства, как немного облагородить свой рабочий стол (на любителя).
Читать далее →

Сканер предназначен для отслеживания «узких» мест, статичного кода PHP, которые могут быть потенциально опасны,
и использованы для взлома приложения.
RIPS – аббревиатура от pRocess of Identifying Potential Security, что в вольном переводе означает «процесс выявления потенциальной бреши».
Основные возможности сканера RIPS:
- обнаружения XSS, SQL-инъекций, локального и удаленного инклюдинга файлов
- 5 уровней вывода отладочной информации при сканировании
- подсветка уязвимого участка кода
- создание эксплоитов в пару кликов (на основе CURL)
- семь различных цветовых тем для подсветки синтаксиса
Скачать сканер можно здесь -> http://sourceforge.net/projects/rips-scanner/
Написал небольшую функция для получения списка банкоматов ПриватБанка в конкретном городе. Делаем запрос на получение XML списка, который содержит в себе название объекта и его местоположение (улицу), потом парсим это дело и загоняем все в массив для дальнейших каких-то действий(каких зависит от ваших потребностей).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <?php
// get_atm.php //
function get_atm ($city) {
$city = urlencode($city);
$url = "https://privat24.privatbank.ua/p24/accountorder?oper=prp&atm&address=&city=$city&PUREXML=";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL , $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt($ch, CURLOPT_TIMEOUT , 20);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , 0);
$rez = curl_exec($ch);
curl_close($ch);
$dom = new DomDocument ('1.0','UTF-8');
$dom->loadXML($rez);
$xpath = new DOMXPath ($dom);
$result = $xpath->query('//atm');
$rezl = array();
for ($i=0;$i<$result->length;$i++) {
$atm = $result->item($i);
$atm_mas = array();
$atm_mas['name'] = $atm->getAttribute('name_RU');
$atm_mas['address'] = $atm->getAttribute('address_RU');
$rezl[] = $atm_mas;
}
return $rezl;
}
print_r(get_atm ($argv['1']));
?> |
Писал под консольный вариант, поэтому чтоб запустить пример запускаем с параметром, а именно так:
Другу дали задание написать простенькую программку на любом языке программирования, которая будет делать основные математические действия с комплексными числами (сложение, вычитание, умножение и деление двух чисел), т.к. ему немного было лень писать, то попросил меня, благо делов 5 минут.
Для этого создадим первый файл (complex.h) который будет содержать объявления нового типа данных и его структуру.
1 2 3 4
| typedef struct
{
double a,b;
} complex_t; |
Вот такой вот простенький хидер.
Теперь создадим основной файл и назовем его complex.c, в который поместим описание функций основным математических действий, над комплексными числами, в коде даны комментарии, так что тут больше описывать нечего.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #include <stdio.h>
#include "complex.h" // заголовочный файл для работы с к.ч
complex_t add (complex_t x , complex_t y ) // ф-ция сложения к.ч.
{
complex_t t ;
t. a = x. a + y. a;
t. b = x. b + y. b;
return t ;
}
complex_t sub (complex_t x , complex_t y ) // ф-ция вычитания к.ч.
{
complex_t t ;
t. a = x. a - y. a;
t. b = x. b - y. b;
return t ;
}
complex_t mul (complex_t x , complex_t y ) // ф-ция умножения к.ч.
{
complex_t t ;
t. a = x. a * y. a - x. b * y. b;
t. b = x. a * y. b + x. b * y. a;
return t ;
}
complex_t div (complex_t x , complex_t y ) // ф-ция деления к.ч.
{
complex_t t ;
t. a = (x. a * y. a + x. b * y. b)/(y. a*y. a+y. b*y. b);
t. b = (x. a * y. b - x. b * y. a)/(y. a*y. a+y. b*y. b);
return t ;
}
int main ()
{
double a1 ,b1 ,a2 ,b2 ;
printf ("Введите 4 числа: \n");
while(scanf ("%lf%lf%lf%lf", &a1 ,&b1 ,&a2 ,&b2 ) == 4) {
complex_t x = {a1 ,b1 }; // первое к.ч.
complex_t y = {a2 ,b2 }; // второе к.ч.
complex_t a = add (x ,y ); // сумма к.ч.
complex_t s = sub (x ,y ); // вычитание к.ч.
complex_t m = mul (x ,y ); // умножение к.ч.
complex_t d = div (x ,y ); // деление к.ч.
printf ("a = (%5.2lf, %5.2lfi)\n", a. a, a. b ); // результат суммирования
printf ("s = (%5.2lf, %5.2lfi)\n", s. a, s. b ); // результат вычитания
printf ("m = (%5.2lf, %5.2lfi)\n", m. a, m. b ); // результат умножения
printf ("d = (%5.2lf, %5.2lfi)\n", d. a, d. b ); // результат деления
return 0;
}
return 0;
} |
Код простой, но может пригодиться какому-то ленивому студенту-заочнику, потому что на дневном такое должны знать как моряк азбуку Морзе
.
Удачи в программирование.
Имея ноут DELL Vostro 1015 с Ubuntu на борту, стал замечать треск жесткого диска (hard driver) при работе от батареи, после обновления на 10.04.
Вызвано тем что был включен мод контроля жесткого диска в режиме работы от аккумулятора.
Отключаем эту фичу совсем, потому что убьет жесткий диск намного быстрей.
Открываем файлик в любом текстовом редакторе под рутом /etc/laptop-mode/laptop-mode.conf, находим следующую строку
ENABLE_LAPTOP_MODE_ON_BATTERY и присваиваем ей значение равное 0 (нулю).
В итоге должна иметь следующий вид:
1
| ENABLE_LAPTOP_MODE_ON_BATTERY=0 |
3Proxy – очень хороший, маленький прокси-сервер. Делаем его полностью анонимным, легким движением руки (можно все задать и через опции, но мне как то, так спокойней), подкорректировав proxy.c в дире src/.
Задав значение переменной anonymous.
1 2
| int anonymous = 1; //(222 строка)
//anonymous = param->srv->singlepacket; //(238 строка) |
Теперь нужно только собрать все.
После этого смело заходим, к примеру, на http://www.leader.ru/secure/who.html и смотрим, что идет «прямое» соединение и никаких прокси.
Набросок парсера для получения ссылок на музыкальные произведения и их названия, в социальной сети ВКонтакте.
Возможно будет в дальнейшем использован в VKFS (Файловая Системы Вконтакте.)
Читать далее →