Cветодиодная линейка на MAX7219

Попалась мне в руки светодиодная линейка неизвестного происхождения из 52 двухцветных светодиодов - красный и зелёный. Которая управлялась двумя микросхемами maxim max7919(драйвер). У этой платки было 8 пинов для подпайки, один из которых ни к чему не подключался.

Цель - разобраться что она из себя представляет, как работает и сделать что-нибудь с ней - погонять "бегущие огни" будет вполне достаточно.

Read more

Linux и ассемблер!?

Глупо.. есть же си, правда? :) И куча замечательных языков. На сколько я знаю, значально линукс создавался для написания программ только на си более высоких языках.

Но конечно же можно писать даже на асме под линукс. Зачем?..

Read more

jdbc: неверная кодировка при работе с БД

Имеем:

  • Последний mysql connector/j
  • Кодировку БД, таблиц и полей в utf8_general_ci
  • Системную кодировку системы(древний ASP Linux) - cp1251
  • Принудительную установку кодировки при и после подключения:

    String connectionString = "jdbc:mysql://www.box/database"
    + "?useUnicode=true&characterEncoding=UTF-8"
    + "&charSet=UTF-8&encoding=UTF-8";
    Connection con = DriverManager.getConnection(connectionString,
    "someuser", "somepass");
    con.prepareStatement("SET CHARSET \"utf8\"").executeUpdate();
    con.prepareStatement("SET NAMES \"utf8\"").executeUpdate();

По факту в базу вставляются записи в виде абракадабры. Казалось бы - настроил всё что можно, причём однозначно везде юникод, что может быть не так?

Read more

CPU load indicator

Что это?

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

Собственно это очень простое устройство, плавно показывающее текущую нагрузку процессора меняя яркость светодиода(ну или по желанию можно использовать другую нагрузку). Людям, которые занимаются моддингом особо думаю понравится - нужно только приложить фантазию :) Работает через USB, причём программный, реализованный с помощью прооекта V-USB. В качестве мк выбран Atmega8

Read more

Java: Скачать страницу или файл с веба

Самый простой способ скачать страницу или картинку или ещё что-то в вашем приложении - воспользоваться вот таким классом с одним статическим методом.


/**
* Fetch url
* @author rux
*/
public class Fetcher {

public static String get(String urlString) {
StringBuilder result = new StringBuilder();
String line;
try {
URL url = new URL(urlString);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
while ((line = reader.readLine()) != null) result.append(line);
reader.close();
} catch (Exception e) {
// ...
}

return result.toString();
}

}

Read more

MySQL: Выборка повторяющихся записей

Чтоб получить количество записей, в которых одно или несколько полей одинаковы, можно воспользоваться такой конструкцией:
SELECT `fhash_low`, `fhash_high`, COUNT( * ) `cnt`
FROM `mt_tfiles`
GROUP BY `fhash_low`, `fhash_high`
HAVING `cnt` > 1

Read more

Kohana & firePHP: nginx выдаёт 502 при включённом debugToolbar

Те, кто следит за количеством запросов, потребляемой памяти, временем выполнения и другими важными показателями при использовании debugToolbar также наверняка используют firePHP - плагин к плагину fireBug для Firefox позволяющий дебажить работу своего веб-приложения.

По понятным причинам, на сайте после apache поставлен nginx. Наверное кто нибудь пытался сделать дамп большого объекта или массива и запихать его в firePHP. PHP скрипт отрабатывает удачно, в логах также всё нормально(код 200):

123.123.123.123 - - [31/Jan/2010:15:08:44 +0300] "GET /somepage/o.O HTTP/1.0" 200 66939 "-" "Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.1.6) Gecko/20091216 Iceweasel/3.5.6 (like Firefox/3.5.6; Debian-3.5.6-1) FirePHP/0.4"

А вот nginx в браузер выдаёт

502 Bad Gateway

nginx

Так и в моём случае: всё работало нормально, казалось бы изменил совсем чуть-чуть: добавил ещё один вызов метода у модели. И на тебе - 502 Bad Gateway.

Read more

Перебор многомерного массива в поисках ключа

Простой способ перебрать многомерный ассоциативный массив и получить из него трубуемые элементы, например по ключу:

function recarray($ar, $searchfor) {
    static $result = array();

    foreach($ar as $k => $v) {
    if ($k == $searchfor) $result[] = $v;
        if (is_array($ar[$k]))  recarray($v, $searchfor);
    }
    return $result``;
}

$tst = array (
  'bob' => 'Bob MEN',
  'google' => array (
      'somekey' => 'somevalue',
      'bob'     => 'big man'
  ),
  'martin' => array(
      'bob'     => array(
      'friend' => true,
      'age'    => 100500),
      'cat'     => 'animal'
  )
);

$result = recarray($tst, 'bob');

print_r($result);

<!--more-->
<p>
Результатом работы скриптика будет:
</p>

Array
(
    [0] => Bob MEN
    [1] => big man
    [2] => Array
        (
            [friend] => 1
            [age] => 100500
        )

)


Это просто ответ на
вопрос на
винграде

PHP: Генератор картинок шрифтов

Символ из шрифта на картинке
Понадобилось написать генератор картинок символов из различных шрифтов(всех что есть в системе). Всё просто - символ чёрного цвета в центре изображения на белом фоне, расфасованные по папочкам по названию шрифта и размеру - путь получится в виде symbols/FONT/SIZE/SYMBOL.jpg

Read more