Бележки при конвертиране на бази/файлове -- cp1251,utf8,latin1 и т.н.

1. При дъмпване на файл използвам аргумента --extended-insert=FALSE, чрез които не се обединява всички insert-и, а ги разбива на ред по ред. Идеята е, че ако има проблеми да можем лесно да открием и фикснем проблема.
т.е.:
mysqldump --extended-insert=FALSE -uUSER -pPASS DB > db.sql

2. При конвертиране с iconv виждаме следната грешка:

iconv: illegal input sequence at position 23945

за да открием точно къде е проблема отварям файла с vim

и с goto:

:goto 23945

и така откриваме проблема веднага.

3. Фиксване на Utf8 таблица с cp1251 съдържание.

cat 1.sql | iconv -f utf-8 -t latin1//TRANSLIT > 2.sql
cat 2.sql | iconv -f cp1251 -t utf-8 > final.sql;

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Машина за инвертиране на захарен сироп

Докато си почивах реших да направя машина за инвертиран сироп. Какво е инвертиран сироп? Захарен сироп(захар + вода), но инвертиран т.е. захарта се разбива на прости захари(монозахариди), глюкоза и фруктоза. Разбиването се получава, чрез ензима "Инвертаза".

Това е целта на инвертирането, а машината трябва да изпълнява следния примерен процес(Примерен защото може да се променя, разбира се):

Време на процеса: 24 часа
Температура за поддържане:  55 градуса
На всеки 15 минути мотора се включва и разбърква работния разтвор по 2 минути на всеки час, но после го промених на 2 минути разбъркване на всеки 15 минути т.е. по 8 минути на час.

За автоматично контролиране на нагревателите и мотора използвах perl + arduino + SSR релета+температурни сензори, разбира се. Можех да го направя само на arduino, но така, чрез Perl ми е далеч по- лесно и гъвкаво, най- малкото и лесно може да се направи да говори, да се стартира от разстояние(и при ардуино става, но ми е по- трудно).

Машината е направена и с възможност за ръчен контрол т.е. без автоматика(използват се ключовете от контролното табло)

Рецептата по която инвертирам сиропа /100 л. работен разтвор/ е следната:

Вода : 30 кг.
Захар : 70 кг.
Ензим инвертаза : 5 гр.
Време : 24 часа
Температура :55 *C

Ензима инвертаза е закупен от Аналитика ЕООД ,
Цена на ензима инвертаза: 50 гр. -- 50 лв. , 500 гр. -- 500 лв.

При време: 24 часа, 50 гр. ензим инвертаза са достатъчни за инвертиране на 1000 кг инвертиран сироп.

Снимки на машината за инвертиран сироп:

mashina_invertiran_sirop_1

mashina_invertiran_sirop_2

mashina_invertiran_sirop_6

mashina_invertiran_sirop_5

mashina_invertiran_sirop_4

Снимки на мониторинга:
invertiran_sirop_izgled_monitor

От мониторинга се вижда кога е пусната машината, кога ще спре, дали е включен нагревателя или мотора,текуща температура, както и колко време остава до завършване на процеса(обратен брояч).

Снимка на схемата(свързването) в таблото:

shema_invertiran_sirop-1
Код на ардуино:

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

int pin_nagrevatel=12;
int pin_motor=11;
float temp_low=26;
int temp_find=27;

int inputserial;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
Serial.begin(9600);
pinMode(pin_nagrevatel, OUTPUT);
pinMode(pin_motor, OUTPUT);

sensors.begin();
}

// the loop routine runs over and over again forever:
void loop() {

sensors.requestTemperatures(); // Send the command to get temperatures
float temp1 = sensors.getTempCByIndex(0);

//Kontrol na whodnite komandi
while( Serial.available() > 0 )
{
inputserial = Serial.read();
Serial.println(inputserial);

switch( inputserial)
{
case 48://0
delay (1000);
Serial.print("temp: ");
Serial.println(temp1);
delay (1000);

break;
case 49://1
digitalWrite(pin_nagrevatel, HIGH);
Serial.println("Nagrewatel ON ");
break;
case 50://2
digitalWrite(pin_nagrevatel, LOW);
Serial.println("Nagrewatel OFF ");
break;

case 51://3
digitalWrite(pin_motor, HIGH);
Serial.println("Motor ON ");
break;

case 52://4
digitalWrite(pin_motor, LOW);
Serial.println("Motor OFF ");
break;
};
}//End of while( Serial.available() > 0 )
}

Код на perl(martin_invert.pl):

#!/usr/bin/perl -w
### Invertirane na zaharen sirop ver. 0.25 ##
### Writte by Martin Petrov | mpetrov.net ###
### Date Thu May  7 08:05:20 EEST 2015  #####

use Term::ANSIColor;
use Device::SerialPort qw( :STAT 0.19);
use Term::Screen; #cpan; install Term::Screen
use DateTime; #cpan; install DateTime

### Basic variable ###
my $temp_find=55; #Temperatura za poddyrjane
my $temp_min=54; #Minimalna temperatura pri koqto se wkl. nagrewatelite
my $timer_hours=24;
my $filename="report.log";
open(FILE, ">>$filename") or die "Could not open file '$filename' $!";

### Ext variables ###
my $dt   = DateTime->now( time_zone  => 'Europe/Sofia');
my $date = $dt->ymd;
my $time = $dt->hms;
my $date_time_start = "$date $time";
$dt->add(hours => $timer_hours);$date = $dt->ymd;$time = $dt->hms;my $date_time_stop = "$date $time";
my $terminal = new Term::Screen;
my $nagrevatel_run=0;
my $motor_run=0;
my $temp_cur="00";

=comment
my $port = Device::SerialPort->new("/dev/ttyACM0");
if(!$port) {$port= Device::SerialPort->new("/dev/ttyACM1");};
if(!$port) {$port= Device::SerialPort->new("/dev/ttyACM2");};
if(!$port) {$port=Device::SerialPort->new("/dev/ttyACM3");};

$port->baudrate(9600);
$port->parity('none');
$port->databits(8);
$port->stopbits(1);

$port->stty_ignbrk(1);
$port->stty_icrnl(0);
$port->stty_opost(0);
$port->stty_inlcr(0);
$port->stty_isig(1);
$port->stty_icanon(0);
$port->stty_echo(0);
$port->stty_echoe(0);
$port->stty_echok(0);
$port->stty_echoctl(0);
$port->stty_echoke(0);
$port->are_match("\n");
$port->write_settings() or die "write settings";
sleep 2;
=cut

### [B]  Wzima temperaturata ###
sub get_temp()
{
$port->write("0");

my $temp;
while (1) {
my $char = $port->lookfor(4);

if ($char)
{
if ($char =~ /\d\.\d/) {$temp=$char;last; }
};#End of if ($char)
}

$temp =~ s/^\s+|\s+$//g;
return "$temp";
};#End of sub get_temp()
### [B]  Wzima temperaturata ###

###########################################

#Prawi pyrwo izmerwane na temperaturata
#$temp_cur=get_temp();
$temp_cur=33;
open(FILE, ">>$filename");print FILE "$date_time_start START [$temp_cur *C]\n";close FILE;

my $countdown = $timer_hours*60*60; # in secs.
$| = 1;

my $beg_time = time;
my $end_time = $beg_time + $countdown;

for (;;) {
$dt   = DateTime->now( time_zone  => 'Europe/Sofia');$date = $dt->ymd;$time = $dt->hms;$datetimenow = "$date $time";

my $time = time;
last if ($time >= $end_time);

$chas=($end_time -- $time) / (60*60);
$min=($end_time -- $time) / (60) % 60;
$sek=($end_time -- $time) % 60;

$terminal->clrscr();
print colored("Инвертиране на захарен сироп (Инвертиран сироп) от Мартин Петров -- www.mpetrov.net", 'black on_white'),"\n";
print colored("\rСтарт: $date_time_start | Стоп: $date_time_stop | Темература: $temp_cur *C        ", 'black on_green'), "\n";

print colored("\rВключен нагревател: ", 'black on_red');
if ($nagrevatel_run==1) {

print colored(" ДА ", 'yellow on_blue');
} else {

print colored(" НЕ ", 'black on_yellow');
};

print colored(" | Включен мотор: ", 'black on_red');
if ($motor_run==1)
{
print colored(" ДА ", 'yellow on_blue');
} else {
print colored(" НЕ ", 'black on_yellow');
};
print colored("                                    ", 'black on_red'),"\n";
print "\n\r";
printf("\rСиропа ще бъде инвертиран след: %02d ч. : %02d м. : %02d с.\r",$chas,$min,$sek);

#Wkl. motor
if ((($min==59) and ($sek==59)) or (($min==29) and ($sek==59)))
{

if ($motor_run==0)
{
$motor_run=1;
#$port->write("3");
open(FILE, ">>$filename");print FILE "$datetimenow MOTOR ON\n";close FILE;
};#End of if ($motor_run==0)
};

#Izkl. motor
if ((($min==57) and ($sek==59)) or (($min==27) and ($sek==59)) )
{
if ($motor_run==1)
{
$motor_run=0;
#$port->write("4");
open(FILE, ">>$filename");print FILE "$datetimenow MOTOR OFF\n";close FILE;
};#End of if ($motor_run==1)
};

my $chetno=$min%2;

#Ako e chetno t.e. e = 0 togawa prowerqwa t.e. na wseki 2 minuti
if (($chetno==0)and($sek==59))
{
#$temp_cur=get_temp();
$temp_cur=33;
if ($temp_cur<=$temp_min)
{
#Wkl. nagrevatel
if ($nagrevatel_run==0)
{
$nagrevatel_run=1;
#$port->write("1");
open(FILE, ">>$filename");print FILE "$datetimenow NAGREVATEL ON [$temp_cur *C]\n";close FILE;
}
else
{
open(FILE, ">>$filename");print FILE "$datetimenow STAY NAGREVATEL ON [t. min: $temp_min *C | t_find: $temp_find *C > t. current: $temp_cur *C]\n";close FILE;
};#End of if ($nagrevatel_run==0)
}#End of if ($temp_cur<=$temp_min)
else
{
if ($nagrevatel_run==1)
{
$nagrevatel_run=0;
#Izkl. nagrewatel
#$port->write("2");
open(FILE, ">>$filename");print FILE "$datetimenow NAGREVATEL OFF [$temp_cur *C]\n";close FILE;
};#End of if ($nagrevatel_run==1)
};#End of else if ($temp_cur<=$temp_min)
};#End of if (($min==59) and ($sek==59))

sleep(1);
}#End of for (;;) {

open(FILE, ">>$filename");print FILE "$datetimenow STOP\n";close FILE;
$port->close();

VN:F [1.9.22_1171]
Rating: 5.0/5 (5 votes cast)
VN:F [1.9.22_1171]
Rating: +3 (from 3 votes)

Debian 6 squeeze Downgrade php 5.4 към 5.3

/etc/apt/sources.list

deb http://ftp.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

apt-get update

apt-cache policy php5
php5:

Installed: 5.4.39-0+deb7u2
Package pin: 5.4.39-0+deb7u2
Candidate: 5.3.3-7+squeeze19

apt-get install –reinstall libapache2-mod-php5=5.3.3-7+squeeze19 php-pear=5.3.3-7+squeeze19 php5=5.3.3-7+squeeze19 php5-cli=5.3.3-7+squeeze19 php5-common=5.3.3-7+squeeze19 php5-curl=5.3.3-7+squeeze19 php5-gd=5.3.3-7+squeeze19 php5-imap=5.3.3-7+squeeze19 php5-intl=5.3.3-7+squeeze19 php5-mcrypt=5.3.3-7+squeeze19 php5-mysql=5.3.3-7+squeeze19 php5-pspell=5.3.3-7+squeeze19 php5-xmlrpc=5.3.3-7+squeeze19 php5-xsl=5.3.3-7+squeeze19

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Неръждаема стомана тип 304 и 316

Неръждаема стомана тип 304

Инокс тип 304 (1.4301) е най-универсалната и най- широко използван вид от всички неръждаеми стомани (18/8). Спада към аустенитните неръждаеми стомани. Химическият състав, механичните свойства, заваряемостта и устойчивостта на корозия / окисляване са много добри, и в същотото време има относително ниска цена. Има отлични свойства при ниска температура  и реагира добре на студена обработка.
Стомана 304 се използва за индустриални, търговски и битови съдове и детайли, заради добрите си корозионни и топлоустойчиви свойства, като: резервоари за различни течности и твърди вещества. Съоражения в минната промишленост, химическата, хранително вкусовата и фармацевтичната промишленост.

Състав (% от общата маса): Cr-18%, Ni-8%; Mn-2%; N-0.10%; S-0.03%; C-0.08%; Si-0.75%; P-0.045%.

Основни свойства:

Твърдост: 92 Rockwell B (HR B) max;
Якост на опън: 515 (MPa) min;
Плътност: 8000 (kg/m3);
Температура на топене: 1371- 1399 градуса по Целзий;
Магнитна пропускливост: Max 1.02.

Устойчивост на корозия: Отлична, при голяма част от атмосферните въздействия и агенти водещи до корозия. Податлива на питинг и кересивна корозия в топла хлоридна среда, и кракинг корозия над 60°C. Счита се, за устойчива на питейна вода със съдържание на хлориди до около 200 mg / L при стайна температура, като намалява до около 150 mg / L при 60 ° С.

Топлоустойчивост: Добра устойчивост на окисляване. Не се препоръчва продължителна употреба при температури на аустенитна стомана 304  в диапазона 425-860 ° С.

Заваряемост: Отлична заваряемост с всички стандартни методи.

Закаляване: Нагряват се до 1010-1120 ° С и бързо се охлаждат. Този тип стомана не може да се закалява чрез термична обработка.

При необходимост тип 304 може да се замени с:

Тип 316 – по добра устойчивост на питинг и кересивна корозия. По добра устойчивост на корозия в хлоридна среда;

Неръждаема стомана тип 316

Тип 316 е аустенитна неръждаема стомана, съдържаща Молибден в състава си, и е втората най-употребявана неръждаема сплав след тип 304. Като цяло 316 има по-добра устойчивост на корозия в сравнение с тип 304, като съдържанието на Молибден я прави устойчива на питинг и кервесивна корозия в хлоридна среда. Има отлични механични характеристики и много добра заваряемост. Лесното формоване в различни детайли прави този тип неръждаема стомана предпочитана сплав за различни архитектурни, промишлени и транспортни приложения.

Има няколко разновидности- 316, 316L, 316Ti и 316H. 316L е нисковъглеродната версия на този тип, а 316Н е с по-високо съдържание на въглерод.

Състав (% от общата маса, 316)- Cr-18%; Ni-14%; Mo-3%; Mn-2%; N-0.10%; S-0.03%; C-0.08%; Si-0.75%; P-0.045%.

Основни свойства(316):

Твърдост: 95 Rockwell B (HR B) max;
Якост на опън: 515 (MPa) min;
Плътност: 8000 (kg/m3).

Устойчивост на корозия: Усточива на атмосферни условия и различни разяждащи вещества. Податлива на питинг и кервесивна корозия в топла хлоридна среда и на кракинг корозия при температури над 60 градуса. Тип 316 се смята за „морски клас“ неръждаема стомана, но не е устойчива на топла морска вода. При контакт с морска вода е възможно да се появи повърхностна корозия под формата на кафеви петна.

Топлоустойчивост: Добра устойчивост на окисление.

Закаляване: Нагрява се до 1010-1120 ° С и бързо се охлаждат. Този тип стомана не може да се закалява чрез термична обработка.

Заваряемост: Много добра с всички стандартни методи.

Приложения: ХВП, топлообменици, парапети, архитектурни детайли, фармацефтична промишленост и др.

Източник: inoxsteel.wordpress.com

VN:F [1.9.22_1171]
Rating: 1.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: -1 (from 1 vote)

GNU/Linux -- хард диск -- 3TB -- ext4

parted /dev/sdb

(parted) mklabel gpt

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)

(parted) unit TB

(parted) mkpart primary 0.00TB 3.00TB

(parted) print

(parted) quit

#mkfs.ext4 /dev/sdb1

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

arduino включване на двигател и нагревател(машина за инвертиран сироп)

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

int pin_nagrevatel=12;
int pin_motor=11;
float temp_low=26;
int temp_find=27;

int inputserial;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
Serial.begin(9600);
pinMode(pin_nagrevatel, OUTPUT);
pinMode(pin_motor, OUTPUT);

sensors.begin();
}

// the loop routine runs over and over again forever:
void loop() {

sensors.requestTemperatures(); // Send the command to get temperatures
float temp1 = sensors.getTempCByIndex(0);

//Kontrol na whodnite komandi
while( Serial.available() > 0 )
{
inputserial = Serial.read();
Serial.println(inputserial);

switch( inputserial)
{
case 48://0
delay (1000);
Serial.println(temp1);
delay (1000);

break;
case 49://1
digitalWrite(pin_nagrevatel, HIGH);
Serial.println("Nagrewatel ON ");
break;
case 50://2
digitalWrite(pin_nagrevatel, LOW);
Serial.println("Nagrewatel OFF ");
break;

case 51://3
digitalWrite(pin_motor, HIGH);
Serial.println("Motor ON ");
break;

case 52://4
digitalWrite(pin_motor, LOW);
Serial.println("Motor OFF ");
break;

};

}//End of while( Serial.available() > 0 )

}

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Личен Блог на Мартин Петров