Arduino music - проигрывание музыки на платформе Ардиуно

Category: hardware

Долго лежала в тумбочке моя Arduino, преждем чем я достал ее и решил хоть что нибудь попробовать, ну и попробовал издавать с помощью нее какие нибудь звуки. Для этого я нашел какуюто старую пьезо пищалку и срочно прикрепил ее на breadboard, подключил ее к arduino написал немного кода, и вот что получилось:

В планах наверное подключить туда клавиатуру, чтобы сделать синтезатор, чтобы можно было делать chiptune

Исходники под катом и на гитхабе https://github.com/noroot/arduinostuff, код не мой, взял с гугла источник уже непомню, но код немного исправил.

Для тех кто не знает что такое Arduino, - это такая opensource hardware платформа для программирования микроконтроллеров, выглядит она так:

Файл pitches.h можно взять здесь https://github.com/noroot/arduinostuff/blob/master/lib/pitches.h

how to render template into variable in ZF2

Category: php

Следующий пример показывает как можно просто отрендерить шаблон в переменную в Zend Framework 2

<?php 
 
public function coolAction()
{
	$d = array();
	$r = new PhpRenderer();
	$resolver = new \Zend\View\Resolver\TemplateMapResolver();
 
	$resolver->setMap(array(
		'confirmation_template' => __DIR__ . '/../../../view/user/mail/confirmation.phtml' // full path to template
	));
	$r->setResolver($resolver);
	$model = new ViewModel($d);
	$model->setTemplate('confirmation_template');
	$x = $r->render($model);
}
?>

How to define console object

Category: javascript

Ситуация такая, допустим вы везде испоьзовали для отладки console.log, но потом на тестировании в разных браузерах обнаружили что console object is undefined например в IE нет никакого console object.

Этот код определяет обьект console и может быть использован для эмуляции или просто заглушки(чтобы небыло алертов об ошибках).

if (typeof(console) == 'undefined') {
    var console = {
        log: function(message) {},
        info: function(message) {},
        warn: function(message) {},
        error: function(message) {
            alert(message);
        }
    }
}

Is touchscreen on javascript

Category: javascript

Some of javascript shortcuts below here:

var is_touch_device = 'ontouchstart' in document.documentElement;
function isTouchDevice() {
    var el = document.createElement('div');
    el.setAttribute('ongesturestart', 'return;');
    return typeof el.ongesturestart === "function";
}

Php strftime month name

Category: dev php

Многие задаются вопросом не незнают как правильно сделать склонения дат которую выдают функция strftime(“%B”); Документация по этому вопросу ничего конкретного не говорит, и полное название месяца %B на разных системах выводится по разному

Например в OSX php 5.4.3 %B показывает полное название месяца в нужному падеже например “Августа”, при этом тот же самый код в Debian выдает “Август”, дело в том что в файлах локалях содержатся разные строки строки, в OSX со склонение , а в Debian без склонения, тем не менее это еще не вся магия дело в том что в файлах локали есть такие строки

% Initially alt_digits was supposed to hold alternative symbols for _digits_,
% corresponding to %O modified conversion specification.
% Although in Ukrainian language alternate _names_ are used instead of digits.
% We'll use this keyword to present a list of month names in proper form for
% date, see mon. (%Om)
%
% This hack is dedicated for months it won't work for other %O* modifiers
% (weeks, days etc).
%

Подробнее подкатом.

Zend framework 2 preDispatch

Category: zf2

Как сделать preDispatch и postDispatch actions в Zend Framework 2 ? код ниже

<?php
 
namespace Application\Controller;
 
use Zend\Mvc\Controller\ActionController
    Zend\Mvc\MvcEvent;
 
class IndexController extends ActionController
{
    public function indexAction()
    {
        return array();
    }
 
    protected function attachDefaultListeners()
    {
        parent::attachDefaultListeners();
 
        $events = $this->events();
        $events->attach('dispatch', array($this, 'preDispatch'), 100);
        $events->attach('dispatch', array($this, 'postDispatch'), -100);
    }
 
    public function preDispatch (MvcEvent $e)
    {
        // Called before self::indexAction()
    }
 
    public function postDispatch (MvcEvent $e)
    {
        // Called after self::indexAction()
    }
}

“100” и “-100” это порядок запуска действий.

Simple environment dependency config with Node.js

Category: nodejs

Простой способ сделать зависимые от окружения конфигурации в Node.js. Определяем директорию для конфигураций, пусть это будет ./config/environments/ тогда простейший код для зависимых конфигураций будет такой:

var config = require("./config/environments/" + process.env.NODE_ENV || 'default');

Запускать такой javascript код надо будет таким образом:

NODE_ENV=development node index.js

В случае если вы не задали переменную NODE_NEV, загрузится конфигу по умолчанию. (default)

Если хочется что нибудь по сложнее то в nodejs есть полно модулей и один из них NCONF

Upgrade macbook pro to 16GB RAM

Category: hardware mac

Привет, сегодня я расскажу почему мой macbook pro лучше вашего, ну а если менее эгоцентрично пост будет на тему апргейда оперативной памяти на macboook pro.

Начнем с того что Macbook которые я хочу апгрейдить следующей комплектации 13” Macbook Pro (Early 2011) i5 2.3 / 4GBRAM

Прочитав немного форумов и официальных страниц Apple Inc. я решил взять следующую модель памяти SO-DIMM DDR3, 8ГБ, Kingston, KVR1333D3S9/8G

Сама процедура замены памяти, простая если вы работали с внутренностями компьютера до этого момента.

1) Откручиваем заднюю крышку макбука

Болты хитрые и прикручиваются только в те места откуда их выкрутили

2) Вынимаем старую память путем отгибания сдерживающих “ножек” и точно также вставляем новую

3) Запускаем компьютер и видимм следующее:

Теперь ответ на вопрос зачем ?

Для серфинга почты, и написания текстов будет достаточно стандартной памяти 4GB, но если планируеются запускать несколько виртуальных машин или Photoshop и все одновремнено и работать с большими библиотеками медиафайлов то 16GB будет заметно спасать систему от своппинга.

P.S. Работать стало заметно комфортнее, нет фризов, нет свопа.

html5 input file fakepath

Category: dev frontend

Если у вас возникла проблема с тем что в поле input type=file, вместо нормального значения выставляется c:\fakepath\your_kewl_filename , вы должны помнить следующее

According to the specifications of HTML5, a file upload control should not reveal the real local path to the file you have selected, if you manipulate its value string with JavaScript. Instead, the string that is returned by the script, which handles the file information is C:\fakepath.

This requirement is already implemented in Internet Explorer 8 – the real path to the file will be shown only if the page that contains the control is added to the trusted sites collection of the browser.

Обращая внимание на спецификацию ХТМЛ5 инпут загрузки файлов недолжен указывать на реальный путь к файлу в системе который вы выбрали, вместо этого в javascript будет попадать значение C:\fakepath.

Это обязательство уже реализовано в IE8, но кому какое дело, главное чтоб в Chrome точно такая же история.

Hudson Git and SSH keys

Category: howto dev

Установка Hudson на Ubuntu с Git + доступом по ssh-key

Скачиваем native-package с сайта Hudson

$ sudo dpkg -i hudson.deb
```

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

$ apt-get -f install 

После чего hudson готов к использованию на :8080 порту.

Для работы с Gitом по ключам необходимо эти ключи сгенерировать, заходим от ползователя hudson

$ sudo su hudson

Генерируем ключи

$ ssh-keygen -t rsa

После чего соответсвенно кладем эти ключи к себе в кофниг gitosis в директориб keydir и соотвествено добавляем разарещения в gitosis.conf После push в gitosis-admin можно создавать в hudson проект и указывать URL репозитория, - все должно работать.