воскресенье, 24 мая 2015 г.

Raspberry Pi 2 - первые впечатления

Заказал на ebay за 2400 наборчик из малинки, радиаторов и корпуса. Доплатил 200 руб за платную доставку China AirMail, был трекинг и посылка приехала за 2.5 недели.

 





























Заказал еще флешку SanDisk Ultra на 16 гиг на aliexpress, пока она едет - взял у друга 4 гиговую флешку microSD, залил на нее RaspBian отсюда.

По инструкции отсюда залил на флешку образ при помощи dd.

Шнурка HDMI у меня не было, блок питания взял от айфона, шнурок microUSB от мобилки.

Дальше подключил сетевым проводом к роутеру, просканировал через nmap локалку
nmap -p 22 --open -sV 192.168.1.0/24

Зацепился к малинке по ssh, логин pi, пароль raspberry.

Для первоначальной настройки (пароль юзера, расширение раздела на диске) вводим
sudo raspi-config

Дальше я воткнул в юсб wifi-модуль

Пока такой, то что нашел в ящике, сетевушка покупалась давненько на ebay рублей за 200, у нее 5db антенна, чип Atheros и 802.11n.



Вводим в консоли iwconfig и проверяем, что сетевушка определилась.
pi@raspberrypi ~ $ iwconfig
wlan0     IEEE 802.11bgn  ESSID:off/any 
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm  
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
         
lo        no wireless extensions.

eth0      no wireless extensions.



Дальше заходим под суперюзером
sudo su

Обновляем список пакетов и пакеты
apt-get update && apt-get upgrade

Устанавливаем пакет, для подключения к сетям wpa в консоли
apt-get install wpasupplicant

Дальше
wpa_passphrase name password >>/etc/wpa_supplicant/wpa_supplicant.conf
где name - имя сети, password - пароль к вашей сети

Теперь перезагружаемся, проверяем, что к wifi цепляется автоматически.

По умолчанию система идет с иксами, но если у нас сервер, то можно освободить место на диске, удалив графическую оболочку и xserver

sudo apt-get remove --force-yes  xfce* gnome* lxde* xserver-x*

Я решил еще снести java
sudo apt-get purge oracle-java8-jdk

После этого стало занято не 2.4Gb, а только 1.7Gb








вторник, 19 мая 2015 г.

ООП - объектно ориентированное программирование (на примере пхп).

Есть такие вещи, как классы
class MYCLASS
{
}


Внутри класса могут находиться переменные и функции
class MYCLASS
{
   public $var1,$var2;

   public function func1()
   {
    echo 'тратаат';

   }

   public function func2()
   {
    echo 'тратаат';

   }
}

 Класс можно не объявлять, если он только со статическими методами и свойствами, типа
public static function funcname ()

Но обычно его надо объявить
$class = new MYCLASS;

Для обращения к переменным и функциям внутри класса, нужно указать сам класс, вот так
$class->func1();
$class->var1=0;

Внутри класса можно обращаться без указания его типа, применяя $this
$this->var1=5;

Если вместо public написать private, то обращаться к этой функции или переменной можно только из самого класса, извне будет невозможно обратиться.

На основе одного класса можно создать другой
class Class2 extends MYCLASS {



}        


После этого все функции и переменные в дочернем классе Class2 будут браться из родителя MYCLASS - это наследование, но если в дочернем создать функцию с таким же именем, то будет вызываться она - это переопределение.

И научным языком функции внутри класса называются методами, а переменные свойствами.


Это далеко не всё, есть еще абстрактные классы и интерфейсы, но о них позже.

четверг, 14 мая 2015 г.

Mysql и работа с NULL

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



 мы делаем запрос

SELECT * FROM `products` WHERE NOT `picture_id`>0

У нас выберет записи, у которых в picture_id 0, но не выберет те, у которых NULL


А теперь чуток поменяем запрос и получаем вот что:

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

Для решения данной проблемы нужно писать
SELECT * FROM `products` WHERE `picture_id`=0 OR `picture_id` IS NULL

Либо значение по умолчанию поставить 0, а потом выполнить запрос
UPDATE `products` SET `picture_id`=0 WHERE `picture_id` IS NULL