Устанавливаем MySQL 5.7.17 на Raspbian Jesse (Raspberry Pi 3)

Выполняем в командной строке по порядку

apt-get update
apt-get upgrade

В файле /etc/apt/sources.list меняем jesse на stretch

apt-get update
apt-get install gcc-6 g++-6

В файле /etc/apt/sources.list меняем stretch на jesse

apt-get update
wget http://mirror.nus.edu.sg/Debian/pool/main/libe/libevent/libevent-core-2.0-5_2.0.21-stable-2_armhf.deb
wget http://mirror.nus.edu.sg/Debian/pool/main/m/mysql-5.6/mysql-common_5.6.30-1~bpo8+1_all.deb
wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/libmysqlclient-dev_5.7.17-1_armhf.deb
wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/libmysqlclient20_5.7.17-1_armhf.deb
wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/libmysqld-dev_5.7.17-1_armhf.deb
wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-client-5.7_5.7.17-1_armhf.deb
wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-client-core-5.7_5.7.17-1_armhf.deb
wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-server-5.7_5.7.17-1_armhf.deb
wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-server-core-5.7_5.7.17-1_armhf.deb

wget http://ftp.debian.org/debian/pool/main/liba/libaio/libaio1_0.3.110-3_armhf.deb
wget http://ftp.debian.org/debian/pool/main/liba/libaio/libaio-dev_0.3.110-3_armhf.deb
wget http://ftp.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2_armhf.deb

sudo dpkg -i libevent-core-2.0-5_2.0.21-stable-2_armhf.deb
sudo dpkg -i liblz4-1_0.0~r131-2_armhf.deb
sudo dpkg -i libaio1_0.3.110-3_armhf.deb
sudo dpkg -i libaio-dev_0.3.110-3_armhf.deb

sudo dpkg -i mysql-client-core-5.7_5.7.17-1_armhf.deb
sudo dpkg -i mysql-server-core-5.7_5.7.17-1_armhf.deb
sudo dpkg -i mysql-common_5.6.30-1~bpo8+1_all.deb
sudo dpkg -i mysql-client-5.7_5.7.17-1_armhf.deb
sudo dpkg -i mysql-server-5.7_5.7.17-1_armhf.deb

Все. Все файлы, на случай их удаления с открытых ресурсов: mysql-57-raspbian
(wget http://ppapp.ru/wp-content/uploads/2017/02/mysql-57-raspbian.zip)

Корректно ставим драйвер SQLite для GoLang в Windows 10 x64

Всем привет, недавно мне пришлось написать небольшую программу на языке Go, которая использовала SQLite в качестве БД. Все это дело я собирал и разрабатывал на Macbook под управление Mac OS X. В качестве драйвера SQLite использовался пакет https://github.com/mattn/go-sqlite3. И все было хорошо, пока не встала задача установки данной программы на ПК с Windows 10 x64. Тут и начались траблы)))

Все пакеты устанавливаль и не выдавали ошибок. При запуске моего приложение, в консоль вываливаль ошибка о том, что драйвер sqlite3 не найден. Сразу же был найден пост на github странице пакета, но ничего  не помогло. Копнув глубже была найдена проблема, необходимо было вручную скомпилировать библиотеку sqlite используя gcc компилятор, а потом используя bash выполнить команду сборки пакета sqlite драйвера в golang. Если вы сталкнулись с подобной проблеммой вот вам рецепт приготовления.

  1. Скачиваем и устанавливаем актуальную версию GoLang (https://golang.org/dl/);
  2. Прописываем в переменных системного окружения пути к Go, а так же переменную GOARCH=386 (если не хотим мучиться с установкой mingw64), это скажет компилятору Go формировать 32 битные испольнитеотные файлы и библиотеки (https://github.com/golang/go/wiki/WindowsCrossCompiling);
  3. Скачиваем актуальную версию MinGW32 (http://www.mingw.org);
  4. Устанавливаем MinGW32 с компилятором GCC, Automake, AutoConfig и MSYS (в качестве bash);
  5. Скачиваем исходники sqlite (https://www.sqlite.org/download.html) с параметрами автоконфигурирования (sqlite-autoconf-{version}.tar.gz), распаковываем в любоу папке;
  6. Запускаем MSYS и переходим в каталог с распаковаными исходниками sqlite;
  7. Выполняем конфигурирование: # ./configure
  8. Собираем библиотеку: # make
  9. Устанавливаем библиотеку в MinGW: # make install
  10. Скачиваем драйвер sqlite в go не выходя из MSYS: # go get -u  github.com/mattn/go-sqlite3 (если же драйвер скачан, тогда выполняем сборку  # go build  github.com/mattn/go-sqlite3)
  11. Собираем нушу программу;
  12. Радуемся.

Если данная статья будет вам полезна, просьба написать комментарий.

Все спасибо!

Наш сервис смешных публикаций — iХоХо

Представляем вашему вниманию наш новый сервис — iХоХо.

Он позволяет вам просматривать смешные публикации каждый день! Публиковать свои веселые фотографии и отслеживать их уровень одобрения пользователями! Для работы с сервисом вам необходимо установить наше приложение на мобильный телефон или планшет, ссылка на него есть на сайте сервиса. Пока что доступна версия для iOS (iPhone/iPad), но в скором времени выйдет и на Android.

Ссылка на сайт нашего сервис: http://ihoho.ppapp.ru

В будущем мы напишем статьи, как же мы все это создавали)

Kotlin zone. Подборка библиотек и расширений с использованием языка kotlin

RxKotlin — набор расширений для более интересного использования Kotlin

Spek — Specification фреймфорк

Kara — MVC фреймфорк

Klaxon — библиотека для работы с JSON

Android Kotlin Extensions — набор расширений для разработки Android приложений на Kotlin

Anko — библиотека расширений для Android

Kotlin-nosql — mongoDB 

Изучаю Node.js — Начало

Всем огромный привет! Сегодня я решил начать обучение разработке серверных приложения с использование Node.js.

Примечание: данный цикл статей нацелен на аудиторию людей, которые имеют опыт и знания в разработке ПО, но хотят изучить JavaScript и Node.js

Для начала я определил для себя что необходимо повторить ситаксис и приемы использования JavaScript.

Стандарт  JavaScript называется ECMAScript. На просторах рунета нашел интересную спецификацию ECMAScript, а также электронный учебник по JavaScript. С него я и начал свое погружение в JavaScript.

  1. Переменные, константы, функции

Переменная состоит из имени и выделенной области памяти, которая ему соответствует.

Для объявления переменной используется ключевое слово var

В переменной можно хранить что угодно — число, текст, массив данных, объекты и даже функции.

var a;
var b = 'hello';
var object = new Object();
var n = 10;
var d = 0.1;

На имя переменной в JavaScript наложены всего два ограничения:

  • Имя может состоять из: букв, цифр, символов $ и _
  • Первый символ не должен быть цифрой.

Константа — это переменная, которая никогда не меняется. Как правило, их называют большими буквами, через подчёркивание. Технически, константа является обычной переменной, то есть её можно изменить, но в ES-2015 предусмотрены новые способы объявления переменных: через let и const (use strict ) вместо var

Соответственно объявление константы в JavaScript:

"use strict"

const MY_TEXT = 'Hi';
const NUMBER_5 = 5;

Отличия let от var:

  • Область видимости переменной let — блок в котором она объявлена
  • Переменная let видна только после объявления
  • При использовании в цикле, для каждой итерации создаётся своя переменная

Ссылки для ознакомления:

Типы данных — https://learn.javascript.ru/types-intro

https://learn.javascript.ru/variables

https://learn.javascript.ru/let-const

Для использования let и const необходимо использовать новый стандарт ES-2015, подробнее https://learn.javascript.ru/strict-mode

Функции — основные «строительными блоками» программы.

Вначале идет ключевое слово function, после него имя функции, затем список параметров в скобках и тело функции — код, который выполняется при её вызове.

function nameFunctiom() 
{
  alert( 'This is function body' );
}

Подробнее можно почитать тут — https://learn.javascript.ru/function-basics 

  1. Объекты / классы

function className(){
    this.param1 = 0;
    this.getParam1 = function()
    {
      return this.param1;  
    };
}

var object = new className();
alert('Param1 value: '+object.getParam1());

 Более подробно можно почитать тут — https://learn.javascript.ru/about-oop

Описывать целиком синтаксис и возможности JavaScript я не буду, если вы знаете C/C++, Java или другой объектно-ориентированный язык программирования, то вам не составит труда уже сейчас начать писать на JavaScript.

Hello World Node.js

Для начала необходимо скачать и установить ядро Node.js, инсталятор можно найти на офицальном сайте.

Текущии версии Node.js — 4.2.4 LST и 5.3.0 Stable , мне нужна версия 4.2.4 под Mac (на сайте есть версии по Windows/Mac/Linux).

GetNodeJs

Скачиваем, устанавливаем, идем в консоль, вводим node -v, если в ответ видим v.4.2.4 — супер! Node.js установлен! Если же node: command not found — повторяем установку.

Создадим файл hello.js в обычном текстовом редакторе.

console.log("Hello World");

 теперь запускаем его в консоле командой: node hello.js. Я думаю вы видите в консоле тоже самое, что и я — «Hello World».

 

В следующей статья я научусь работать с модулями Node.js и создам очень простое web приложения Web Hello World.

Kotlin, Extentions, Android и Reactive

projectKotlin

В сегодняшней  заметке хочу рассказать о практике реактивного программирования для Android с использование kotline 😉

Дано: есть компонент кастомный (конкретно https://github.com/MiguelCatalan/MaterialSearchView)

Задача: запрашивать данные с сервера, используя SearchView используя RxJava 😉

Немного поразмыслив получаем задачу в таком виде: обернуть стандартный слушатель MaterialSearchView… ну использовав возможности Kotlin extentions.

Код (обёрточка):

public fun MaterialSearchView.asObserver(): Observable<String>{
    return Observable.create { subscriber ->
        var watcher= object: MaterialSearchView.OnQueryTextListener{
            override fun onQueryTextSubmit(query: String?): Boolean {
                if (!subscriber.isUnsubscribed) {
                    subscriber.onNext(query)
                    return true
                }
                return false
            }

            override fun onQueryTextChange(newText: String?): Boolean {
                if (!subscriber.isUnsubscribed) {
                    subscriber.onNext(newText)
                    return true
                }
                return false
            }
        }
        this.setOnQueryTextListener(watcher)
    }
}

 

В итоге, для запросов получается примерно такой код:

fun searchHandler(){
          searchView.asObserver()
         .debounce(500, TimeUnit.MILLISECONDS)
         .subscribe {strQery->Запрос_на_сервер(strQery)}
    }

 (в коде задержка в 500млсек, чтобы не мучить сервер зря)

Вот впринципе и все. 

Маленький вывод: реактивность рулит) С kotlin все очень хорошо вяжется и нет проблем.

Ошибки, соображения и предложения оставляйте в комментариях.

Подробнее как обернуть слушатель тут: https://github.com/JakeWharton/RxBinding