0
<< предыдущая заметкаследующая заметка >>
07 июля 2014
Домашний сервер и помидоры

Рассказываю. Как вы наверно помните, у меня дома долгие годы живет домашний сервер (пост о концепции домашнего сервера 2010/04/27), который занимается всякими разными задачами от раздачи интернета до квартирной электроники и прочих экспериментов. Сервер впервые был поставлен господином Морозовским году так в 2001, с тех пор пережил много переездов с железа на железо (в основном с помощью господина Семеняки), но дальнейшее его обслуживание становилось все тяжелее и тяжелее. В последние годы это была большая пыхтящая машина с кучей воткнутых карт и сопутствующей периферией:


Концепция домашнего сервера вообще-то подразумевала, что сервер един, и я им полностью управляю. На самом деле это было не так. Отдельно от нее виcела коробочка WiFi Dlink, которая грелась и раз в несколько лет сжигала свой блок питания. И как она раздает свой WiFi — никаких тонких инструментов у меня не было. Сервером я не управлял тоже — хитроумно настроенная FreeBSD 6.2 со слетевшими портами была сильно выше моей квалификации и не поддавалась никакому управлению, а Семеняка был занят. Постепенно начала сыпаться и квартирная электроника — отказал сканер отпечатка пальца, из-за поплывших параметров электроники в LPT-порту заглючила система звонков. Я отказался от LPT-порта и (после обсуждений 2013/04/08 перешел на Ардуино. К сожалению, проклятая FreeBSD 6.2 категорически не желала отправлять Ардуине команды — могла только принимать. А обновить FreeBSD со всеми ее jail, dhcp-серверами и хитрейшей картой маршрутизации — это было вне моей квалификации. Одно время я даже думал нанять админа чтобы привести сервер в порядок, но было понятно, что всех моих проблем и хотелок такой метод не решит. Одновременно я стал задумываться о том, чтобы вообще выкинуть сервер к чертовой матери и поставить какой-нибудь умный маршрутизатор, но после обсуждений 2013/08/18 пришел к выводу, что это моих проблем не решит, хотя модель роутера ASUS RT-N16, что вы особенно советовали, я запомнил.

Помог случай. Мерзейший WiFi Dlink (второй по счету в квартире) в очередной раз сжег не только свой блок питания, но и себя самого. И я купил ASUS RT-N16 в надежде раздать по квартире автономный от сервера интернет, а сервер как-то починить. Но оказалось, что сервер не нужен — все (абсолютно все) мои потребности решает эта маленькая коробочка ASUS RT-N16 с установленной на ней Прошивку «от Олега и единомышленников». Пока я не развесил эту технику красиво и не убрал в короба провода, это выглядит так:

Основной принцип: в этой системе я всё должен уметь сам. К счастью, она оказалась сильно проще полудохлой FSD 6.2, да и мануалов по ней предостаточно. Итак, что это? Сперва пару слов о маршрутизаторе — у него 1 вход интернет-провода, 4 выхода, плюс есть на борту 2 USB-слота. Первая задача — выкинуть штатную прошивку устройства и поставить прошивку нормальную, с которой уже можно работать. Для этого используется внешняя флешка — отныне все программное добро системы лежит там. Я использовал флешку 8Гб сперва, а после воткнул туда же и внешний USB-диск 2ТБ домашнего архива. Это внешний USB, разбитый под ext3 — именно там у меня сейчас домашний сайт и swap. В принципе, можно было с флешкой не морочиться, сразу диск подключать. Хватит ли 2ТБ для домашнего файл-сервера? Раньше я думал, что нет. Но, ей богу, хранить тонны кино дома — это сегодня абсурд. А для всего остального 2ТБ хватит за глаза. Внешнюю коробку для диска надо обязательно брать с вентилятором, я взял за 800 руб такую, хотя она шумновата. Особый гемор был переписать архивы со старого сервера — там диск был разбит в формате ufs, причем с каким-то таким нетрадиционным размером блоков, что ни один Линукс его прочесть не мог. А полуразрушенный сервер BSD не читал линуксовые диски ext2/ext3/ext4. Поэтому при помощи и с советами Гоши Курячего была проведена адова операция: в сервер был воткнут чистый диск, отформатирован под ufs уже со штатными размерами блоков, на него было всё слито, затем загружен Линукс, который _этот_ ufs уже хотя бы в режиме чтения смог увидеть и слить обратно на исходный диск, предварительно отформатированный в ext3. Не храните, братцы, диски в ufs, дохлая система. Храните в ext3.

Оказалось, что маршрутизатор не любит, когда на одном разъеме висит много чего, и диск стал отваливаться при заливке больших объемов данных. Поэтому на одном USB у меня винт и флешка, на втором — периферия: звуковые карты и Ардуина:

Звуковые карты — традиционно одна звучит наружу на лестницу, другая внутрь квартиры. Это дверной звонок, оповещения, кукушка, разные прочие сигналы и сообщения, а еще можно музыку играть. USB-карта с бесплатной доставкой по России стоит от 1 доллара. Реально. Подорожали они сейчас — я-то брал еще по 0.91$ :) Не помню точно, какие действия я производил, чтобы установить карту в систему — кажется, никаких. Но при старте Asus я гружу такие модули (а если были загружены, на всякий случай предварительно выгружаю):

/sbin/rmmod snd-timer
/sbin/rmmod snd-hwdep
/sbin/rmmod snd-rawmidi
/sbin/rmmod snd
/sbin/rmmod snd-page-alloc
/sbin/rmmod soundcore

/sbin/insmod soundcore
/sbin/insmod snd-page-alloc
/sbin/insmod snd
/sbin/insmod snd-rawmidi
/sbin/insmod snd-hwdep
/sbin/insmod snd-timer
/sbin/insmod snd-pcm
/sbin/insmod snd-mixer-oss
/sbin/insmod snd-pcm-oss
/sbin/insmod snd-usb-lib
/sbin/insmod snd-usb-audio

Это самодельная коробка с электроникой и реле на базе Ардуино. Например, она открывает дверной замок (замок квартиры электрический). Обычно на этом месте паникеры начинают мне задавать вопросы. Мол, а если заглючит, если электричество отрубят? Отвечаю: этот замок стоит около 8 лет. Проблем с ним не было (а вот прежние механические раз в три года ломались и их выпиливали болгаркой). Замок так просто не ломается (там еще сигнализация самодельная). И у него, как у любого нормального электронного замка, есть личинка со штатным ключом. Ключ есть у наиболее консервативных членов семьи. Поэтому, если вырубят энергию более чем на полчаса (иначе UPS выдержит), просто откроем ключом. Но вообще он открывается электронно, и это дико удобно. Например, я могу открыть дверь приехавшим гостям, находясь не дома — с мобильника через интернет. И для срабатывания замка я использую 12 вольт от блока питания Asus, чтоб не ставить отдельный блок.
Нормально, никаких проблем. Кстати, Ардуино с Asus согласуется прекрасно. При запуске системы я делаю такую инициализацию:

/sbin/rmmod ftdi_sio
/sbin/rmmod usbserial

/sbin/insmod usbserial
/sbin/insmod ftdi_sio

/bin/stty -F /dev/ttyUSB0 57600 -echo

Новый оптический сканер отпечатков пальцев лежит в коробочке и ждет своего часа, мне все лень с ним разобраться. Но я пока нашел другую игрушку, может даже более удобную — RFID-RC522. Это бесконтактный сканер NFC-ключей, он стоит с доставкой от 135 руб. Штуковина довольно просто подключается к Ардуине шестью проводками и позволяет организовать открытие замка при поднесении к двери ключа. Которым может быть все, что угодно — два ключа в комплекте, московская социальная карта, и даже просто старые карточки метро, это все протокол Mifare 13.56MHz. Для экспериментов я просто спустился в метро и набрал карт из корзинки для отработанных карт. У каждой карты свой уникальный номер, программируешь Ардуину пускать в дом по списку.

Из любопытного: у двух карт метро номер оказался одинаковым. Вряд ли это поможет злоумышленнику прийти с колодой карт и подобрать код, но все равно интересно. Еще любопытное: моя карта УЭК, по которой я хожу в метро, пару раз выдала читалке свой номер, и с тех пор говорить с ней отказывается глухо. В метро по ней я ходить продолжаю спокойно. Поскольку протокол Mifare — он и в Африке Mifare, я полагаю, что у УЭК внутре стоит какая-то паникерская блокировка от несанкционированных читалок. Для моих задач это неудобно, но конструкторскую задумку разработчиков УЭК и заботу о безопасности я вынужден оценить высоко.

Вдобавок надо сказать, что под DD-WRT вообще легко программируется. Я туда поставил Midnight Commander (не могу без него, там и редактор дивный), gcc, и вот пример программки. Это демон, который вешается в память и ждет строчку сообщения от Ардуины, а когда она придет, передает ее как параметр, запуская процедуру обработки сигнала zvonkido.php Смысл в том, что если строчку от Ардуины будет ждать сам zvonkido.php (в моих задачах ожидание события длится часами и даже сутками), то он со своим консольным интерпретатором php будет жрать в памяти 16%. А бинарник жрет 1% памяти.

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>

int main(int argc, char* argv[]) {
int fd, ack=1, l=0,i;
char buff[100]="",longbuff[1000]="";
fd=open("/dev/ttyUSB0", O_RDONLY | O_NOCTTY);

while(1) { l=read(fd, buff, 1000);
if(l>=100) { printf("error length\n"); return 1; }
buff[l]=0;
for(i=0;i<l;i++) {
if(buff[i]==0) { l=i; break; }
if(buff[i]==0x0D || buff[i]==0x0A) { l=i; buff[l]=0; break; }
if(buff[i]<32 || buff[i]==34 || buff[i]==39) { printf("hack error ['\"]!\n"); l=0; break; }
}

if(l) {
strcpy(longbuff,"/opt/lleo/zvonkido.php '"); strcat(longbuff,buff); strcat(longbuff,"'");
system(longbuff);
}
}
close(fd);
return 0;
}

Итак, что сейчас делает сервер-маршрутизатор?
— раздача интернета, WiFi
— файловый архив Samba (т.н. «диск R:")
— обслуживание нескольких звуковых карт
— работа с Ардуино
— домашний вебсайт http://home.lleo.me (там пока я поставил mysql + легкий lighttpd, apache ставить не стал, думаю, как под него заточить свой движок, чтоб без mod_rewrite работал)
Я пока не знаю, какую еще придумать задачу, с которой бы он не справился. Учитывая, что USB-устройств туда можно натолкать массу (скоро я, например,восстановлю свой GSM-гейт для приема/отправки SMS).

PS1: К сожалению, закончилась неудачей попытка сделать в Asus искусственный интеллект, чтобы коробка тихо висела в углу, но отвечала на вопросы: проклятая утилитка rec не захотела писать звук со звуковой карты. Хотя другие утилиты звук пишут, но мне нужна именно эта — она умеет ждать сообщения. Скомпилировал бы кто-нибудь sox толково, и был бы разговаривающий и отвечающий на вопросы интеллект :)

PS2: Роутер Asus RT-N16 прекрасен во всех отношениях. Хотя есть еще мощнее: Asus RT-AC56U Он правда стоит в два раза дороже, но если бы я знал, что оно так хорошо полетит на этой загадочной DD-WRT, я бы купил самый мощный — мало ли какие задачи мне потребуются в будущем? В общем, если вы соберетесь покупать RT-N16, купите у меня (2681 руб, куплен 2 месяца назад, коробка, гарантия, стоит правильная прошивка, в подарок дам звуковую карту :), а я себе тогда 56U куплю.

В принципе на этом отчет о переустройстве домашнего сервера закончен (надеюсь, кому-то это будет полезно). Но девочки, я гляжу, заскучали, поэтому остаток заметки мы посвятим цветочкам и садоводству.

Два месяца назад я писал, что обустроил на балконе делянку с помидорами, и месяц назад они активно росли. Сейчас кусты выросли и цветут. Правый ящик на фотке выше, слева направо: «Томат F1 Ласка» вымахал выше всех (не уверен, что это хорошо) и опередил на голову «Томат F1 Сластена» (пара кустов в центре), а слева приютились пышные ростки «Физалиса десертного» который лично я тоже отношу к помидорам. Лично мне больше нравится крайний левый ящик:

Эти крепкие коренастые кусты — «Жемчужина желтая». Они не вымахали так высоко вверх, зато красивы, и уже покрылись цветами. Они прекрасны:

Два маленьких ящичка в центре балкона я добавил позже, недельки через три:

Это «Томат Оранжевая шапочка» и «Томат F1 Карамель». Первая — из породы темно-зеленых и коренастых, вторая — светлая, лезет вверх. Говорят, их надо как-то «прищипывать», но я начинающий огородник и пока не умею. Я только по вашим советам провожу пасынкование — ну, то есть брею подмышки выщипываю листики, которые начинают расти в стыке между ветвями и стволом. Да, Ардуину пока не приделал — поливаю сам.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Windows Opera
 Исландия
2
1
Хелена_Вера
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Помидорчики... красота-то какая. ) Высокие мне больше нравятся.
Linux Safari Chrome
 Москва
7
0
Анонимаус
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Вызывать так system — это полный проёб безопасности. Далеко не только кавычками можно всё сломать. Переделай на execlp.
Linux Safari Chrome
 Москва
2
0
Анонимаус
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А ещё на сервере, где этот блог, часы отстают в хлам. Этот комментарий на самом деле отправлен в 20:13:38.
Linux Ubuntu Firefox
 Москва
0
2
Леонит Каганофф
Дружище, это профдеформация ;)

Какая безопасность, это же не пользовательский ввод. Это строго определенные стандартные сигналы, которые передает чип Ардуины, запрограммированной мною и подключенной шнурком usb. Ардуина не будет пытаться взламывать сервер :)
Windows Firefox
 Израиль
4
0
braintunic
Ну даже не из-за безопасности, научиться пользоваться execlp/execvp не помешает - а вдруг понадобится вызывать программу две-три тысячи раз в секунду?
Здесь system никак не потянет, со своим вытягиванием шелла на каждом запуске.

Не помешало бы и еще парочку проверок добавить.
Например, если в один прекрасный день файл /opt/lleo/zvonkido.php куда-нибудь исчезнет, то эта программа начнет в бесконечном цикле запускать шелл и ругаться на "No such file or directory" раз так по 200-300 в секунду.
Linux Ubuntu Firefox
 Москва
1
1
Леонит Каганофф
Конечно, спасибо. Незнакомое ранее слово execlp я запомнил на будущее, но пока не знаю, что это и зачем.

Для данной задачи это явно ни к чему пока.

Что касается запусков 300 раз в секунду - откуда вы такую страшную цифру взяли? Это же прекрасно, если файла zvonkido.php не окажется. Потому что запуск 300 раз в секунду интерпретатора PHP на маршрутизаторе Asus со 128мб оперативки может совсем плохо кончиться :)
Windows Firefox
 Израиль
3
0
braintunic
Ну если USB будет работать и нормально читаться, то 300 раз в секунду конечно не выйдет.
А вот если, скажем, USB драйвер упадет, то вот этот вызов "read(fd, buff, 1000)" будет моментально возвращать ненулевой результат (который не проверяется на ошибку).
И тогда, вроде бы, будет немедленно вызываться "system" - вот я и прикидываю, что раз 200-300 в секунду вполне реально :)
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Что значит USB-драйвер упадет? У меня бывало, что отваливалось устройство /dev/ttyUSB0 (и подключалось как USB1, USB2 - это когда на одном USB-порту слишком много всего висело), но в этом случае программа просто затыкалась в ожидании прочитать хоть что-то и никаких "300 в секунду" не случалось.
Windows Firefox
 Израиль
7
0
braintunic
Ну, к примеру, другая программа запустит "rmmod usbserial".

Да мало ли что может произойти, когда в программе не проверяется:
* что файл "/dev/ttyUSB0" действительно успешно открылся;
* что "read" c устройства действительно что-то прочитал, а не вернул "-1" по ошибке;
* что файл "/opt/lleo/zvonkido.php" действительно существует.

Это просто удачный случай, что программа затыкалась, а не входила в бесконечный цикл.
Linux Ubuntu Firefox
 Москва
1
5
Леонит Каганофф
> к примеру, другая программа запустит "rmmod usbserial"

Это еще что! К примеру, другая программа запустит "rm -f /*" - как проверить? Как обезопаситься? ;)
Linux Safari Chrome
 Израиль
13
0
braintunic
Ну я же сказал "к примеру".
А если серьёзно, вот вызов "l=read(fd, buff, 1000)".
Прекрасно, читаем что-то с USB устройства и получаем в переменной "l" количество прочитанных байтов.
Что если попытка чтения неудачна?
А это может произойти по десятку причин - временная перегрузка процессора, перегрузка шины, сбой устройства, и т.д.
В таком случае переменная "l" получит значение "-1".
Следующий оператор не выполнится, поскольку "l" меньше 100.
А вот следующий оператор выполнится - и это может быть катастрофой.
Оператор "buff[l]=0" запишет ноль в поле "buff[-1]", то есть на один байт раньше, чем память отведенная под массив "buff".
Что у нас там находится в памяти? А хрен его знает!
Мы пишем байт в память, не зная куда, не зная, что мы портим и что из этого выйдет.
Авось пронесет... :)
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Ужас, раскритиковали :)
Напишу:
if(l>=100||l<0) { printf("error length\n"); return 1; }
Так нормально?
Linux Safari Chrome
 Москва
9
0
Анонимаус
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
execlp — вызов команды с аргументами. system — вызов команды шелла. Можно приспособить одно под другое, но system каждый раз делает лишнюю работу — разбор команды. И если делать через него, придётся хитро подстраиваться, чтобы разобралось всё, как надо.

Пример: вместо system("sort -u 'spisok dolgov.txt'") пишем execlp("sort", "sort", "-u", "spisok dolgov.txt", NULL). Первый аргумент два раза, так надо. NULL в конце, чтобы правильно работала функция с переменным числом аргументов. И никакой возни с кавычками и иными опасными символами.
Linux Opera
 Москва
4
0
Леонит Каганофф
О, большое спасибо! Теперь буду знать.
Linux Safari Chrome
 Atlanta
1
0
anton.te.16
Как сервер назвал?
Linux Ubuntu Firefox
 Москва
2
0
Леонит Каганофф
Чугунка :)
Windows Safari Chrome
 Москва
2
0
vivliofika
( oo) уфф. А ассоциативный ряд какой до "чугунки"?

Расскажи, пожалуйста!

И насколько быстро, по твоим впечатлениям, крутится php в роутере?
Windows Safari Chrome
 Израиль
1
0
Генадий Ботин
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ого сколько свободного времени!
Linux Ubuntu Firefox
 Москва
14
4
Леонит Каганофф
А вы попробуйте не играть в игры и не смотреть сериалы, как я делаю ;)
Windows Firefox
 Израиль
26
0
braintunic
и не жениться
Windows Firefox
 Москва
5
0
Михаил
Ага, мой способ.
Windows Safari Chrome
 Киев
5
0
manigor
И не ездить по утрам в офис на работу :-)
Windows Safari Chrome
 Краснодар
4
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
И не сидеть в дневниках.
Windows Safari Chrome
 Санкт-Петербург
3
0
beast
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ну, это уже перебор.
Windows Firefox
 Химки
1
0
Johny
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Эх Леонид, знали бы вы про Mikrotik c его metarouter.

Там такой же openwrt внутри но вот мегагерц и мегабайт существенно больше за сравнимые деньги.
А снаружи это все в замечательной отлаженной RouterOS которая держит openwrt типа как в jail.
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
А с какой целью держать openwrt внутри еще какой-то системы Router OS? Чтобы что? ;)
Linux Ubuntu Firefox
 Москва
3
0
Леонит Каганофф
Вы извините, я сходил на сайт Микротика - у них в обсуждаемой нами области всего два товара: один по заоблачной цене под 9 тыщ, другой под 5 тыщ:

http://mikrotik.ru/katalog/katalog/marshrutizatory/soho/rout[...]

http://mikrotik.ru/katalog/katalog/marshrutizatory/kommutato[...]

Оба имеют процессор 600Мгц и оперативки 128.

Для сравнения: Asus RT66U стоит под 4000 руб и имеет вдвое больше памяти (256Mb) при таком же процессоре 600MHz. Причем, мне смутно помнится, что есть разновидность Asus с другими буквами, и там процессор вообще 900Мгц - но точно не помню. Хотя... Нашел: http://wl500g.info/showthread.php?30444-Сравнение-производит[...]
Зацените:
ASUS RT-AC68U 6500 руб, 1600MHz (!), 256Mb
ASUS RT-AC56U 4400 руб, 1000MHz, 256Mb

В связи с этим я не очень понимаю, в чем радость Микротика и где его великие параметры. При всем моем уважении к отечественному производителю - я рад, что Россия (или Латвия? я не понял) делает и разрабатывает такие крутые штуки. Но ОЗУ 128Мб - это у моего Asus 16 при 533MHz, но он стоил не 5000, а 2700. Если мне понадобится 20 портов - тогда конечно, Микротик.
Mac Safari
 Рязань
1
2
Илья
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Вот, например: http://mikrotik.ru/katalog/katalog/marshrutizatory/soho/rout[...] - 600 MHz, 128 Mb, 2310 руб
То же самое, что Ваш Asus, но с реальной операционкой.
Linux Ubuntu Firefox
 Сергиев Посад
3
0
Леонит Каганофф
А что значит "реальная операционка"? А у меня на Asus - нереальная? Но я на ней все делаю.
Windows Firefox
 Москва
1
0
Дуче Моллари
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Микротик — это что-то вроде секты.

Из того, что попадалось на глаза за всё время у меня сложилось впечатление, что этой продукцией фанатеют строившиее в своё время сети при помощи палки и верёвки, когда не было денег на оборудование мировых контор. Вроде уже и поменялось всё вокруг, а сентиментальная привязанность к бренду осталась.
Windows Firefox
 Иваново
1
0
Коржик
На сайте mikrotik.ru цены сильно завышены. Тот же ланмарт продает микротики сильно дешевле. А средние розничные цены лучше смотреть на routerboard.com.
Тот же RB951G-2HnD имеет 600 МГц (можно разгонять) и 128МБ ОЗУ.
И, само собой, микротик сильно надежней того же асуса - сам поменял RT-10N-C1 на RB951Ui-2HnD (в отличии от модели 951G умеет питаться и питать по PoE, что позволило избавиться от ненужных блоков питания, но порты только вот на 100Мбит) и вздохнул с облегчением. Кстати достался вообще бесплатно - их, наряду с майками, наклейками и прочей рекламной туфтой раздают на так называемых "MUM" - Mikrotik User Meetings.
Windows Firefox
 Химки
1
0
Johny
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Попробую обьяснить.

"Нормальная операционка" это то что достаточно оттестировано и отлизано для предсказуемого результата "нажми на кнопку получишь результат".

Пример - вы находитесь в командировке на северном полюсе и через VPN подключаетесь к домашней сети. И тут потребовалось поменять какие-то пару настроек этого VPN. Или маршрутизации. Или провайдер попросил новые настройки вбить.

В голом openwrt результатом таких действий , особенно в не очень опытных руках, на 99% станет утрата доступа к роутеру и управления им, до самого возвращения домой.
Слишком уж сырая и эксперементальная система, крутить ее удаленно практически нельзя.
И даже будучи рядом нет гарантии что не ковырнув чё-нибудь одно не отвалится все остальное.

RoutersOS избавляет от такой проблемы, беря на себя функции гипервизора. То есть мы имеем гарантированный, надежный, предсказуемый удаленный доступ к openwrt и можем если надо востановить-сохранить образ системы , откатить изменения и ни при каких обстоятельствах не утратим контроля.
А внутри openwrt можем наслажлатся своими свистелками и перделками на С.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Вот это я прекрасно понимаю ;) Когда я поеду на Северный полюс с намерением оттуда пересобирать ядро роутера (либо с намерением дать порулить настройками боцману) - я оценю преимущества супероперационки с защитой от дурака.

Но пока мне устройство нужно дома для конструирования неожиданных систем и экспериментов - спаси нас господи от гипервизоров, а с проблемами мы уж как-нибудь справимся :)
Mac Safari
 Подольск
0
0
vvzvlad
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А что за замок-то такой хороший?
Windows Safari Chrome
 Рязань
1
0
Иван Рудаков
У меня RT-N66U, хорошая вещь. А вообще у дорогих роутеров ASUS есть один большой, но совершенно не бросающийся в глаза плюс - у них серьезная гарантия.
Недавно у меня молния прямо за окном бахнула, выгорело много сетевого оборудования, в т.ч. и роутер. Превратился в кирпичик. Так мне его по гарантии просто поменяли на новый. :) Сделал это, кстати, авторизованный СЦ Asus, а не продавец.

А так Микротик крут, конечно. У него возможностей гораздо больше. Я себе один на работу заказал, интересно будет поковыряться.
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
Вы этот имеете в виду?
http://market.yandex.ru/model-spec.xml?modelid=8486674&h[...]

Больше на Маркете вроде не нашел. Ну, у него 1 USB всего, и памяти 128 - как у Asus RT-N16. И еще мне тут выше написали про какие-то непонятные бубны с "прошивкой внутри прошивки", что, надо полагать, тоже ни скорости не прибавляет, ни свободы доступа к потайным настройкам основной системы.

Если что-то интересное знаете про Микротики - расскажите. Потому что я бы хотел маршрутизатор еще помощнее, раз уж так все хорошо под OpenWRT взлетает и настраивается.
Windows Firefox
 Иваново
0
0
Коржик
Леонид, посмотрите на routerboard.com - микротик кроме готовых коробочек выпускает еще и платы а-ля "сделай сам". Например вот: http://routerboard.com/RB953GS-5HnT
802.11 3x3MIMO 1600mW, 2xSFP, 3GbLAN причем с POE, 1 последовательный порт, 2хMiniPCIe, два слота под сим-карты, и все это с шикарнейшей операционкой RouterOS с лицензией L5.
Подороже, правда, чем Asus, но и функциональнее в разы.
По работе постоянно имею дело с микротиками - от домашних RB750 до CCR-ок - одно удовольствие.
Linux Ubuntu Firefox
 Москва
2
0
Леонит Каганофф
А что в вашем понимании "шикарнейшая операционка"?

По мне шикарнейшая операционка в плане юзабилити - это Ubuntu или DD-WRT. Потому что на любой запрос "как мне на DD-WRT..." поисковик уже готов предложить решение раньше, чем ты закончишь фразу.
Windows Firefox
 Иваново
1
0
Коржик
Ну, "шикарнейшая" она именно для такого класса устройств:
0. Набор возможностей "из коробки". Я не знаю еще устройств за пару тысяч рублей, которые бы умели, например, MPLS. Хотя для домашнего использования оно, наверное, и не к чему, если только VPLS для беспроводных линков.
1. Удобное управление через командную строку.
2. Гуй. Он абсолютно одинаково выглядит как для веб-морды, так и для управляющей программы winbox (для windows, но отлично идет под вайном - это отдельно подчеркивается производителем). При этом все кнопочки гуя в точности повторяют текстовый команды. Можно набрать в терминале /ip ipsec user add name=vasya password=123, а можно ткнуть кнопочку ip, потом кнопочку ipsec, открыть вкладку user, и так далее...
3. Скриптовой язык. Он хоть и свой, но удобный.
4. Всякие дополнительные плюшки, типа очередей, позволяющие, например хитро шейпить трафик без особых ухищрений в процессе настройки.
5. Конечно, метароутер. Виртуальная машина, позволяющая пускать в ней тот же DD-WRT (а, впрочем все, что можно собрать под MIPS big-endian) не опасаясь за работоспособность самого микротика.

Бонусом идет удобная система пакетов - все нужные компоненты ставятся в собранном виде и сразу подвязываются к интерфейсу управления. Удаляются так же, безо всяких хвостов и мусора.

Ну и всяческие дополнительные приятности, например, как у больших дядей, есть возможность слить всю (то есть вообще всю!) конфигурацию устройства в один большой скрипт, который можно просто запустить на другом устройстве, предварительно изменив под себя.
Linux Opera
 Москва
2
0
Леонит Каганофф
Правильно ли я вас понял, что суперсистема заключается, грубо говоря, в удобстве графического управления Торрент-сервером на роуте с окрестных машин Виндоус. Но как только я попробую воткнуть в роутер, скажем, звуковую карту... суперсистема не найдет в своем уникальном суперпакетном репозитарии нужных программ и модулей ядра и красиво гуево напишет "Маршрутизатор выполнил недопустимую операцию, которую обычно не делают с нашими маршрутизаторами"? :)
Windows Firefox
 Иваново
0
0
Коржик
Не совсем. Скорее в возможности сделать в три команды (или шесть щелчков мышой) то, что на том же DD-WRT делается с бубном и раскуриванием длинных инструкций, а на штатных прошивках SOHO-роутеров вообще невозможно.
Кстати, торрент-сервера там как раз "из коробки" не предусмотрено - это как бы не совсем задача маршрутизатора. И почему виндоус? Я вообще с телефона их регулярно настраиваю, а там совсем не линукс-андроид, не виндоус и не иос.
Впрочем, я почитал, для вашей задачи микротик скорее всего не подойдет. У метароутера нет прямого доступа к USB, так что звуковую карту микротик просто проигнорирует (если кто-то пробовал такое и получилось - поправьте меня, ибо большего, чем пищать встроенным динамиком, мне как-то не приходилось делать). Только если использовать x86 версию с KVM, но это уже совсем другая история (кстати, ее можно бесплатно скачать с сайта mikrotik.com и, либо попробовать в триальном режиме, либо бесплатно получить ключ Level0, оценив все преимущества и недостатки). Или заливать на микротик ту же DD-WRT вместо родной ОС, такое тоже делают.
Linux Opera
 Москва
2
0
Леонит Каганофф
Ну то есть, я все понял правильно :) Как только начинается разговор о суперсистеме, призванной решать узкий круг специальных задач удобным для виндоюзеров методом, становится понятно, что широкий круг задач этот редкий монстр решать не в силах по определению )
Windows Firefox
 Иваново
0
0
Коржик
Вот зря вы меня так сразу "виндоюзером". =) Компьютер с которого я сейчас пишу - единственный из пяти домашних, на котором есть виндоус. А так в основном Linux, хотя есть и устройство с QNX (именно для работы с ее IDE и стоит машина с виндой).
Да и не скажу, что CLI там привычный для виндоюзера. Гуй - всего лишь приятное дополнение.
К тому же, как я уже написал, на этого монстра можно залить тот же DD-WRT вместо родной ОС. На асусе, насколько мне известно, с родной прошивкой тоже каши не сваришь. А так, да - микротик позиционируется именно как маршрутизатор. Со всякими там проксями, биллингами, радиусами и самбой, но маршрутизатор.
Linux Ubuntu Firefox
 Москва
2
0
Леонит Каганофф
Я не о вас. Просто сама идея сделать удобными для юзера основные "типичные" задачи и анально огородить всё остальное, что "не нужно нашим пользователям" - это классический windows-way. Когда я услышал про удобную чудо-систему, в которой "все есть", и которая заперла DD-WRT в виртуальной коробке - я сразу почуял эту бесовщину, и не ошибся :)
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
А что касается заливки DD-WRT на эту систему вместо "чудо-системы", я так и не понял, чем лучше Микротик 128Мб чем мой Asus 128Мб. Если я правильно понимаю, сказки про чудесный Микротик распространяют владельцы старых роутеров с 32Мб оперативки, которые думают, что Microtik с его 128 это новейший революционный прорыв, и подобных параметров ни у кого больше нет. Про Asus с 256 они явно не в курсе :)
Linux Firefox
 Рязань
0
0
darkhobbit
> хотя есть и устройство с QNX (именно для работы с ее IDE и стоит машина с виндой).

Хм, а что, QNX SDP for Linux hosts прекратил своё существование? Или Вы про другое?
Windows Safari Chrome
 Краснодар
0
2
Trento-pupo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ободранные стены. Буэ.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Это вообще-то лестничная площадка :) Она вообще-то моими стараниями покрашена и отштукатурена. Но если бы вы внимательно посмотрели на первую фотку и на последующие, вы бы сами смогли догадаться, откуда взялись в этих местах ободранности в процессе реконструкции сервера :)
Windows Firefox
 Франция
3
0
Ranma
Это такой эксперимент - сколько выживут кусты помидоров в условиях количества земли на порядок меньшего, чем им нужно?
Windows Safari Chrome
 Израиль
2
0
Генадий Ботин
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Думаете они страдают?
Windows Firefox
 Франция
9
0
Ranma
Страдают? За грехи наши? Помидоры? Не, думаю вы их с кем-то путаете.
Windows Firefox
 Richardson
4
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
«Томат F1», «Томат F2»... — прямо «спаси и сохрани».
Linux Firefox
 Москва
5
0
Фыва Jr Олдж
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Вот вырастут они до "Томата F16" и всё, кранты Чертаново! :-/
Windows Firefox
 Санкт-Петербург
0
0
moskal-kliatiy
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Главное, чтобы не выросли до томатов F-22, или В-2, тогда уже будет совсем поздно...
Windows Opera
 Новосибирск
0
0
Кошмаровский
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Угу. У нас, в сибирских теплицах уже пплоды висят маленькие. А тут так и умрут на подоконнике. Лучше уж травку выращивать тогда
Windows Firefox
 Москва
5
0
grassy
>>хранить тонны кино дома — это сегодня абсурд.

только если ты его не любишь, не смотришь ежедневно по нескольку фильмов и не хочешь пересматривать любимые ленты хотя бы раз в полгода. даже в торрентах некоторые релизы уходят безвозвратно. мне вот уже 12 терабайт недостает, надо апгрейдиться хотя бы до 20.
Windows Firefox
 Челябинск
0
0
vinny-the-poo
У меня док-станция и кучка винтов на полочке лежит, потихоньку пополняется.
Linux Firefox
 Санкт-Петербург
4
0
ziv
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Раз. В случае прочитывания более ста байтов, файл не закрывается.
Два. В функцию read() передаётся лимит, больший размера буфера - буфер 100, а лимит 1000. Лучше использовать sizeof(buff)-1. Иначе программа упадёт до проверки l>=100.
Linux Safari Chrome
 Израиль
2
0
braintunic
1. Здесь проблемы нет. Делается return из функции main, а это автоматом вызовет exit и закрытие всех открытых файлов.

2. Факт, что не падает. Скорее всего, компилятор расположил память массива longbuff сразу за памятью массива buff - опять пронесло ;). Но это баг серьёзный, да.
Linux Firefox
 Санкт-Петербург
0
0
ziv
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
1. Ок.
2. Факт, вы проверили у Леонида? У меня - падает.
Mac Safari
 Израиль
1
0
braintunic
Факт, что у Леонида это работает и не падает, с чего бы ему врать?
А то, что у вас падает, так ничего странного: разве у вас точно такой же роутер? С такой же прошивкой? С той же версией gcc компилятора? И компиляцию вы запускаете с теми же флагами?
Ответ "нет" на любой из этих вопросов - и ничего странного, что ваш компилятор распределил память по другому, и вы получили "segmentation violation".
Linux Firefox
 Санкт-Петербург
4
0
ziv
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Разве Леонид говорил, что программа не падает при чтении 100 байтов и более? Я думаю, просто всегда читается меньше 100 байтов, вот и всё. Хотя, конечно, версию с организацией памяти тоже нельзя отвергать.
Mac Safari
 Израиль
0
0
braintunic
Может и так)
Linux Ubuntu Firefox
 Москва
4
0
Леонит Каганофф
Буду переписывать, я в Ардуине недавно сделал некие отдельные сигналы, которые могут занимать и поболее.
Windows Safari Chrome
 Запорожье
4
0
anonymous
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
буфер размером 100 байт: char buff[100]=""
а читаете - 1000: read(fd, buff, 1000)
Linux Safari Chrome
 Юбилейный
1
2
KPbICMAH
По поводу помидорчиков: не хотите акваферму прикупить? Это аквариум такой с рыбкой, а сверху горшочки для салата и прочей гидропоники. Рыбка кормит растения, растения чистят ей воду. Специально обученный человек кормит рыбку.
Windows Opera
 Москва
0
0
Станислав
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Леонид, мне вот что любопытно - а как вы планируете решать проблему опыления помидоров? Они же не просто так цветут у вас, не для красоты?
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Как порекомендуете? Распахнуть балкон для пчел? Или взять кисточку и опылить самому?
Windows Safari Chrome
 Санкт-Петербург
0
0
Arseny
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Помидоры самоопыляемые. Достаточно раз в день слегка постучать по стеблю, чтобы цветки встряхнулись.
Windows Firefox
 Санкт-Петербург
3
0
moskal-kliatiy
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Заведи мух, пчёлы кусаются, мухи, правда, сильно надоедают, но при таком раскладе, мух можно и перебить, есть ещё вариант с осами, но осы, ровно как и шершни, по кусабельности многоразовые, поэтому мухи универсальнее в этом отношении.
Linux Ubuntu Safari Chrome
 Москва
1
0
nigowa
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
помидорная рассада мух отпугивает напрочь, в комнате с рассадой не будет ни одной 8) мы этим радостно пользуемся на ферме (((:
Windows Opera
 Новосибирск
0
0
Кошмаровский
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Она и людей отпугивает. Вонь несусветная
Linux Ubuntu Safari Chrome
 Москва
0
0
nigowa
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
трава и трава 8) мухи меня раздражают гораздо больше)
Windows Firefox
 Санкт-Петербург
0
0
moskal-kliatiy
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Странно, вонь, вроде бы, должна приманивать мух? Парадокс...
Windows Firefox
 Москва
1
0
Михаил
Муха не человек, в сортах разбирается.
Windows Firefox
 Владивосток
0
0
kunsun
Какая получилась скорость копирования на файловый сервер samba? На raspberry pi с 700мгц и 512мБ получаются печальные 5мБ, неважно через самбу или фтп.
Windows Firefox
 Berkeley
0
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Берите Cubieboard. :–) На нём 7 МБ/с через SSH, а без шифрования — больше 11 (упирается в 100 Мбит/с самой сети).
Linux Opera
 Москва
0
0
Леонит Каганофф
Пока я монтировал диск по ssh, скорость была печальна - гигабайт часами заливался. Но когда смонтировал по Самбе, скорость резко стала вполне приемлема. Точно не помню, но гигабайт перелить - дело минут. Друг объяснил мне этот феномен - ssh гонит шифрованный трафик через проц, а самба - сразу на диск.
Windows Safari Chrome
 Москва
0
0
Shire
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Леонид, самый быстрый способ лить файлы по сети - это банальный tar + netcat. На роутере сделать

cd _dir_
nc -l _port_ | tar x

, а на исходной машине -

tar c * | nc _dest-ip_ _port_ -q 0

скорость приятно удивит :)
Linux Opera
 Нидерланды
0
0
Леонит Каганофф
Лить файлы - не самоцель в домашнем хозяйстве. Самоцель - монтировать сетевой диск. А tar тут вряд-ли поможет )
Windows Opera
 Новосибирск
1
0
Кошмаровский
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Вот нашкребет кто-нибудь карточек метро и устроит ддос атаку твоему серверу.
Linux Opera
 Москва
3
0
Леонит Каганофф
))) Надо ставить вебкамеру - посмотреть на это хочется. Брутфорс вручную! )
Windows Safari Chrome
 Киев
1
0
manigor
Такое для Китая актуально :-) Устроили бы китайские блоггеры флешмоб - каждый бы подошел с карточкой от метро и попробовал бы авторизоваться - точно бы любую защиту сломали.
Windows Safari Chrome
 Mississauga
7
0
Vadimus
Заходит 1й китайский хакер, вводит пароль "Мао Цзедун"
Заходит 2й китайский хакер, вводит пароль "Мао Цзедун"
Заходит 3й китайский хакер, вводит пароль "Мао Цзедун"
На 1 000 000 001-м хакере сервер согласился, что у него пароль "Мао Цзедун".
Windows Safari Chrome
 Челябинск
0
0
Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Заранее скажу, что почти не разбираюсь в этих технологиях. Но, может быть, можно настроить замок так, чтобы он открывался не от одной карточки, а от последовательности карточек (первая потом вторая). Это сильно снижает вероятность подбора.
Linux Opera
 Москва
1
0
Леонит Каганофф
А можно поставить распознающую камеру и ходить с колодой игральных карт в кармане, прикладывая к глазку камеры выборочно. "Сегодня четверг, значит правильный пароль - тройка, семерка, туз..." Удачи в экспериментах!
Windows Opera
 Вологда
0
0
blinkfrog
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Думаю, лучше флешку с программами вытащить из роутера, и держать программы на разделе жесткого диска.
У меня сначала именно так было сделано - optware на флешке, сетевые шары - на HDD, который, благодаря этому, при простое останавливался (с optware просто не простаивает и не останавливается) и не шумел - для меня это важно было. Но через полгода-год такой работы флешки просто осыпались (уже 3 штуки выкинул), в итоге перекинул софт на раздел жетского диска, и все работает без проблем.
Linux Opera
 Москва
2
0
Леонит Каганофф
Честно говоря, у меня еще есть старый SSD - но он всего 80Гб. Я думал, не воткнуть ли вместо флешки его. Хотя... зачем ему SSD?

А флешка не осыпется - он же туда ничего не пишет, и своп не там.
Windows Firefox
 Richardson
3
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Была недавно статейка habrahabr.ru/post/214803 (многабукаф) про глюки даже от чтения. :–/
Windows Firefox
 Москва
0
0
stream
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Вот эта строчка

> char buff[100]="",longbuff[1000]=""

приводит к тому, что программка занимает в памяти (а возможно, и на диске и на диске) на 1100 байт больше, чем надо. Такая строчка означает: проинициализируй мне эти два массива нулями. В результате чаше всего компилятор тупо создает дополнительные 1100 байт нулей, которые потом всего лишь перепишет в твой массив. А в твоей программке вообще ничего инициализировать не надо, поэтому достаточно написать

char buff[100], longbuff[1000];
Windows Firefox
 Richardson
1
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Более того, в данном случае лучше сделать их глобальными.
И даже, возможно, так:

char longbuff[1000] = "/opt/lleo/zvonkido.php '";
char* buf = longbuff + strlen(longbuff);

чтобы не копировать туда-сюда. (Но лучше, конечно, использовать exec.)
Mac Safari
 Израиль
0
0
braintunic
> программка занимает в памяти (а возможно, и на диске) на 1100 байт больше, чем надо.

Ни то ни другое.
Конечно, вы правы, что инициализация здесь совершенно не нужна, но ее наличие вовсе не так сильно вредно, как вы написали.
На диске отводились бы 1100 байт если бы эти массивы были задекларированы "static", а в данном случае никакого места на диске не отводится, массивы создаются и инициализируются только при входе в функцию "main".
В памяти отводится максимум 1 лишний байт под пустую строку, которая здесь использована для инициализации, а вовсе не лишние 1100 байт. Инициализация остатка массива нулями делается прямо в созданном массиве, а не переписыванием с одного места в другое.
Windows Firefox
 Richardson
0
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> Инициализация остатка массива нулями делается

Для локальных переменных не делается.
Linux Safari Chrome
 Израиль
0
0
braintunic
Делается, делается - если мы говорим о Си, а не о Си++.
Windows Firefox
 Вьетнам
0
0
bbb
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
в этой ситуации и в C++ делается.
Windows Firefox
 Израиль
0
0
braintunic
Не спорю.
Мне казалось, что в С++ были какие-то отличия, но наверное я ошибся.
Linux Firefox
 Москва
2
0
Фыва Jr Олдж
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Если бы не было buf[100] = "" то не делалось бы, а так делается.
Windows Firefox
 Richardson
2
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Действительно. Из черновика C89:

If there are fewer initializers in a list than there are members of an aggregate, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.

При этом в The GNU C Programming Tutorial почему-то написано:
«Note 3: If there are not enough expressions in the array initializer to fill the array, the remaining elements will be set to 0 if the array is static, but will be filled with garbage otherwise.»
Видимо, КГ/АМ.
Linux Firefox
 Москва
0
1
Фыва Jr Олдж
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Лично для меня вполне логично если бы было "but will be filled with garbage otherwise", но абсолютно все компиляторы, которые я видел, делают "the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration". Я с этим давно смирился ;-) и знаю что оставшиеся элементы (POD) будут нулями и буду [неприятно] удивлён и поражён если вдруг компилятор в подобном случае не обнулит хвост массива. Да, иногда закладываюсь на это, но это для меня не является undefined behaviour, а очень даже ожидаемый side effect.
Windows Firefox
 Хабаровск
0
0
stream
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Эх, не писали вы под Texas Instruments DSP, где авторы компилятора смачно плюнули на стандарт и ВСЕ static elements ВСЕГДА содержат garbage... Вроде это как-то связано с особенностями загрузки кода в процессор из внешних ПЗУ, а по какой-то причине чистить BSS в стартапе они тоже не смогли и не захотели. Вот уж я был удивлен, так удивлен... Хотя что взять с процессора, в котором что char, что int - хрен один 16 бит... :)
Windows Firefox
 Израиль
4
0
braintunic
Слава богу, что авторы компиляторов базируются на стандарте языка, а не на всяких волюнтаристских интерпретациях, написанных в разных "Tutorials" :)

А стандарт Си здесь весьма чёток:

C99 Standard 6.7.8.21
"If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration."

Так что, Фыва - правильно смирился!) и это вовсе не side effect, а закон, который должен соблюдаться любым компилятором Си.
Windows Firefox
 Richardson
0
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> or fewer characters in a string literal

Ура, наконец-то в явном виде про строки написали! А то я пробовал искать, и везде только про "brace-enclosed list".
Linux Opera
 Москва
0
0
Леонит Каганофф
И вам спасибо.
Linux Firefox
 Москва
2
0
Фыва Jr Олдж
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Фига! Это локальные переменные, а не глобальные и не статические, посему им место выделяется на стеке при входе в main, нифига они дополнительную память не жрут. И зачем это компилятор будет создавать дополнительные 1100 байт нулей? У нас что, Turbo C 1.5 времён конца 80-х? Вот он мог, да, хотя и он вряд ли был туп до такого.

Дабы не быть голословным:

[rhs@sys3175 ~]$ gcc -m32 -S -c asdf.c
[rhs@sys3175 ~]$ less asdf.s

[...]
main:
.LFB0:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
pushl %edi
pushl %ebx
andl $-16, %esp
;
; выделяется память под все локальные переменные
;
subl $1136, %esp
.cfi_offset 7, -12
.cfi_offset 3, -16
;
; ack=1
;
movl $1, 1124(%esp)
;
; l=0
;
movl $0, 1132(%esp)
;
; buf[100] = ""
;
movl $0, 1020(%esp)
leal 1024(%esp), %ebx
movl $0, %eax
movl $24, %edx
movl %ebx, %edi
movl %edx, %ecx
rep stosl
;
; longbuf[1000] = ""
;
movl $0, 20(%esp)
leal 24(%esp), %ebx
movl $0, %eax
movl $249, %edx
movl %ebx, %edi
movl %edx, %ecx
rep stosl
[...]

Так что никто нули туда-сюда не гоняет и 1100 байт нулей не резервирует.
Linux Safari Chrome
 Израиль
0
0
braintunic
А попробовал бы он так поассемблировать в мичети без "rep stosl" ;)
Linux Firefox
 Москва
0
0
Фыва Jr Олдж
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Майкрософтовский Visual Studio обходится без "rep stosd". Правда зовёт memset, внутри которого не только "rep stosd", а вообще жуткий ужас вплоть до использования инструкций SSE2 для оптимизации.

_main PROC

; 9 : int main(int argc, char* argv[]) {

push ebp
mov ebp, esp
sub esp, 1132 ; 0000046cH
mov eax, DWORD PTR ___security_cookie
xor eax, ebp
mov DWORD PTR __$ArrayPad$[ebp], eax

; 10 : int fd, ack=1, l=0,i;

mov DWORD PTR _ack$[ebp], 1
mov DWORD PTR _l$[ebp], 0

; 11 : char buff[100]="",longbuff[1000]="";

mov al, BYTE PTR $SG4037
mov BYTE PTR _buff$[ebp], al
push 99 ; 00000063H
push 0
lea ecx, DWORD PTR _buff$[ebp+1]
push ecx
call _memset
add esp, 12 ; 0000000cH
mov dl, BYTE PTR $SG4039
mov BYTE PTR _longbuff$[ebp], dl
push 999 ; 000003e7H
push 0
lea eax, DWORD PTR _longbuff$[ebp+1]
push eax
call _memset
add esp, 12 ; 0000000cH
Windows Firefox
 Richardson
0
0
Михаил
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Дык, в мичети MIPS32 никакого "rep stosl" и нету. :–) Зачем Фыва тут x86 показывает?
Linux Firefox
 Москва
0
0
Фыва Jr Олдж
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я показал не именно x86, а то, что переменные в данном случае таки обнуляются. Для x86 обнуляются "rep stosd".
Linux Firefox
 Москва
1
0
Фыва Jr Олдж
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
И вообще плохие вы все! :-/ Уйду я от вас! :-/
Windows Firefox
 Хабаровск
1
0
stream
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> И зачем это компилятор будет создавать дополнительные 1100 байт нулей? У нас что, Turbo C 1.5 времён конца 80-х? Вот он мог, да, хотя и он вряд ли был туп до такого

Действительно, MSVC и современный GCC умеют оптимизировать эту конструкцию через копирование нужной части и memset нулевого хвоста - и это радует. Но я работал с огромным зоопарком компиляторов под самые разные платформы и процессоры, насмотрелся всякого, и считаю такую конструкцию "плохим стилем". Ибо разработчики компиляторов тоже люди и тоже порой ленятся. Даже в 21 веке :)

А в 99% случаев у начинающего программиста это еше и обернуто примерно в такую конструкцию:

char buf[1234] = "";
for (;;)
{
....
read(..., buf, ...);
...
}

в которой инициализация вообще не имеет смысла, а имеет место тупое применение каких-то заученных паттернов.
Linux Opera
 Москва
0
0
Леонит Каганофф
Спасибо.
Windows Firefox
 Санкт-Петербург
0
0
Кошак
Вот сам давно точу зуб на подобную реконструкцию. Останавливает то, что на домашнем сервере живут несколько сайтов, в том числе и потоковое вещание. :)
Linux Ubuntu Firefox
 Сергиев Посад
1
0
Леонит Каганофф
Потоковое вещание - не, не потянет Ж)
Windows Opera
 Москва
0
0
Toxa
если речь про iptv, то вполне себе потянет, там в комплекте openwrt для этого дела есть udpxy.
Linux Firefox
 Киев
1
0
Л. Янукович
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
udpxy - это передача уже готового потока, а речь о создании этого самого потока, причем, возможно, с перекодированием на лету. Обычно для этого требуется достаточно мощный процессор, с чем в маршрутизаторах не очень хорошо (насколько понимаю, там стоят процессоры без поддержки операций с числами с плавающей точкой, без которых обрабатывать видео очень грустно и медленно - гигагерцы гигагерцами, но, чтобы целочисленными инструкциями с приемлемой точностью поделить 0.1 на 0.02, тактов нужно очень много).
Windows Firefox
 Санкт-Петербург
0
0
Кошак
Потоковое - аудио :), icecast в один поток, мастером к виртуалке в облаке.
Linux Safari Chrome
 Mountain View
0
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Посмотрите в сторону не модных, но еще бодрых медиаплейеров. За пару тыщ на авито можно купить зверюгу с гигабитным эзернетом, для которого потоковое вещание как 2 пальца. На него и писать поток можно, для ip. камер хорошо.
Windows Firefox
 Санкт-Петербург
0
0
Кошак
Не та задача чуть. У меня инет(и не только)-радио. :)
Ну и в перспективе - гейт для планируемого SDR трансивера.
Windows Safari Chrome
 Краснодар
0
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Приветствую, коллега! Я RW6AFN. Медиаплейер вполне потянет эту задачу, wifi там часто бывает встроенный. У меня встроенного не было, подключил через USB-свисток. Гейт вообще не требователен к ресурсам. Сейчас, правда, роутер у меня отдельный zyxel keenetic giga потому как при перекачке из Vlana в другой Vlan больших объемов сервак просто ложился по утилизации проца.
73!
Windows Firefox
 Москва
1
0
Михаил
Вариант троллинга:

1. Добываем низкорослое растеньице конопли, высаживаем в произвольном месте в рассаду с помидорами, фотографируем, избавляемся от растения.
2. Выкладываем фотки, как это сделано сейчас. Наслаждаемся комментариями.
Windows Firefox
 Санкт-Петербург
1
0
Happy_demon
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Люто, бешенно плюсую!
Леонид! Так давно не было от вас новостей с тэгом "Сделай сам". Просто бальзам на душу.
Linux Firefox
 Великобритания
0
0
gevor
128 мегов - зверь!

У меня в Москве стоит старый Асус той же серии, кажется с 32 мегами еще. Отличная штука, очень надежная. Столько всего не навертеть, конечно, но файлы может раздавать прекрасно.

Кстати, если вдруг не хватит для чего-то мощности (или будет глючить USB с тыщей устройств), не думал часть функций на Raspberry навесить? Я могу тебе их еще привезти.
Windows Firefox
 Химки
1
2
Johny
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Эх Леонид, знали бы вы про Mikrotik c его metarouter.

Там такой же openwrt внутри но вот мегагерц и мегабайт существенно больше за сравнимые деньги.
А снаружи это все в замечательной отлаженной RouterOS которая держит openwrt типа как в jail.
Windows Safari Chrome
 Краснодар
1
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А я с одноплатного компа сервер на медиаплейер перенес, ибо как видеоплейер его практически не пользую. 1 гиг проц, 256 мег памяти, нормальный 2хSATA, USB портов 2 шт, видео и аудиоинтерфейсы, нормальная клава подключается, ДУ на ИК-лучах.И стоит это счастье как роутер. Теперь наслаждаюсь тишиной...
Windows Opera
 Харьков
0
0
p_a_s_h_a
А есть ли у него кнопка?
(Аппаратного включения/выключения антенны WiFi)
Windows Firefox
 Санкт-Петербург
0
0
moskal-kliatiy
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Есть! Блок питания, аднака!
Linux Ubuntu Firefox
 Сергиев Посад
0
0
Леонит Каганофф
Какой из трех антенн? :)))
Windows Opera
 Харьков
0
0
p_a_s_h_a
Достаточно одной на три сразу...
Windows Firefox
 Москва
0
0
Michael
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Очень интересует используемый электрический замок с традиционным ключом. Самого сильно задолбало таскать связки ключей, и организовать решение по открыванию замка, например, телефоном (через NFC/Bluetooth) очень бы хотелось.
Linux Opera
 Сергиев Посад
1
0
Леонит Каганофф
Вкратце: покупаете и ставите в дверь замок с электроуправлением. Лучше всего (удобнее) - самозащелкивающийся с открытием от 12 вольт. Далее на комп/маршрутизатор ставите Ардуину, а к ней реле, которое подает 12 вольт на замок (можно микросхему-ключ). 12 вольт берется с питания маршрутизатора - справится. Только диодов пару в обратку повесить надо, чтоб катушка замка не швыряла импульс. С Ардуиной налаживаете связь - тогда замок можно также открыть с домашнего сайта по паролю. Далее по вкусу - можно RFID подключить, как у меня. Можно сканер отпечатка пальца (как у меня был раньше). Если достанете - можно сканер сетчатки глаза ) Скажите мне, где достали )
Windows Safari Chrome
 Киев
0
0
Роман
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Посмотрите
http://www.eyelock.com/index.php/products/myris
Хотя там, похоже, пока только предзаказ.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
И драйвера только под Windows-9? ;)
Windows Safari Chrome
 Киев
0
0
Роман
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Compatible with Windows 7 & 8, Mac OS and Chrome OS
Думаю, есть надежда на поддержку в будущем и всех остальных операционок.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Ага щас, Open-WRT поддержат они в маршрутизаторах ;)
Windows Safari Chrome
 Киев
0
0
Роман
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
A Chrome OS разве не принадлежит к миру *nix? Может оно как-нибудь с Open-WRT совместимо?
Linux Ubuntu Firefox
 Москва
2
0
Леонит Каганофф
Да нет, судя по размаху говнодизайна, подобные деятели обычно продают "решение". Читай - развесистую графическую клюкву.
Windows Firefox
 Av. de Lavaux CHPully
0
0
kto
у меня на работе стоит сканер сетчатки. в принципе работает, но довольно геморройно, задолбал он меня
Windows Safari Chrome
 Краснодар
2
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Да, самое главное забыл спросить. Будет ли восстановлена функция проигрывания фразы, набранной на сайте, внутри квартиры? Нам всем её очень не хватает...
Пока что предлагаю открыть конкурс фраз, для произнесения через синтезатор унутре Ддущ-квартиры.
Мои варианты:
В 3 часа ночи. "Внимание! Отказ правого двигателя! Экипажу подготовиться к катапультированию через балкон."
Утро, пробуждение: "Не бери в туалет бумагу- прояви свою отвагу!"
С утра, время завтрака: "Мясо вредно!"
Произвольное время: "Сами мы не местные, электроны из Чувашии. Прибыли к вам по единому энергетическому кольцу. Документы все остались на электростанции. Подайте, б-га ради дырок для передвижения, а то застряли мы у вас тут"
Windows Safari Chrome
 Израиль
0
0
Генадий Ботин
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Мне очень не хватает!
Windows Safari Chrome
 Краснодар
0
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А какая фраза заготовлена?
Windows Safari Chrome
 Казахстан
0
0
Holy_coffee
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Про девочек как в воду глядели. :) Томаты... Наше женское любимое.
Windows Firefox
 Palo Alto
0
0
kto
«коробку для диска надо обязательно брать с вентилятором»

мне наоборот было критично, чтобы диски были тихими (wd-red) и полностью на пассивном охлаждении, т.к. это все находится в жилой комнате. ну и raid-1 в качестве бонуса.

так что я оставил роутер тупым (со стандартной прошивкой), а весь интеллект завел в безвентиляторный nas (qnap). там стоит стандартный arm linux, можно поставить свой кастомный кернел, если очень хочется, и не плясать с бубном в виде dd-wrt, на мой взгляд это логичнее
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Без вентилятора есть риск потерять диск с данными - 3.5" реально сильно греются. Тогда уж надо SSD ставить.
Windows Safari Chrome
 Краснодар
0
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
WD Green вашпе не греется и не шумит практически. Лежит у меня рядом с медиаплейером, подключенный через sata-удлинитель (кстати, удлинитель-клёвая вещь, идет в комплекте с iconbit)
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
3.5"?
Windows Safari Chrome
 Краснодар
0
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
да. Он спецьяльно таким рожден хитрыми китайскими родителями. Вот хвалилка на него http://www.wdc.com/ru/products/products.aspx?id=780. Злые языки говорят, что он медленный, я что-то не заметил разницы по сравнению с другими, подключенными к моему серваку.
Только на нем рекомендуется тайм-аут парковки головок поставить побольше http://habrahabr.ru/post/106273/
Linux Firefox
 Великобритания
0
0
gevor
Да, я как раз про эту серию.
Windows Firefox
 Av. de Lavaux CHPully
0
0
kto
если важно именно чтобы не шумел, то wd red или seagate nas
Linux Firefox
 Великобритания
0
0
gevor
По моему опыту, можно попробовать большой радиатор. Если винт "зеленый" (т.е., условно, 5400 оборотов, а не 7200), то вполне ок.
Windows Firefox
 Av. de Lavaux CHPully
0
0
kto
вот поэтому я и выбирал nas с продуманным пассивным охлаждением. плюс там датчик температуры же и за перегревом скрипт следит. и вообще raid (хотя раньше был аналогичный без него)

[~] # cat /proc/tsinfo/systemp
48
[~] # /sbin/get_hd_temp 1
44
[~] # /sbin/get_hd_temp 2
43

а ssd на 8 tb дороговато будет...
Windows Safari Chrome
 Германия
0
0
Родя
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
я нихрена не понял, но дома надо сделать ремонт, это факт))
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Это не дома.
Windows Firefox
 Новосибирск
0
0
Родя
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
печаль. я уже начал думать, что у людей, мол, ещё страшнее квартира. жене уже показал, а то запилила - вынеси ёлку.. а тут такое разочарование..
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
Вы меня устыдили. Поклею в лестничном тамбуре обои.
Windows Firefox
 Новосибирск
0
0
Родя
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
не имел такой цели) извините)
Mac Safari
 Киев
0
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Есть в природе такая железка, думаю, тебе пригодиться:
http://ru.aliexpress.com/item/Voice-Recognition-Module-Ardui[...]
Я на нее давно смотрю, но пока руки не дошли. Запоминает 15 голосовых команд, распознает и отдает в цифровом виде.
Mac Safari
 Киев
1
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А это мое электричество в новой квартире в процессе:



До ума пока не довел, сейчас занят отделкой квартиры.
Идея в двух словах - все розетки/приборы/теплый пол/свет заведены в шкаф и управляются через реле. Светом и розетками рулит ардуинка (Mega), теплый пол/вентиляторы/кондиционеры/бойлер - железка типа RasberriPI. На ней же веб интерфейс на jquerymobile. В ней же 1-wire с термодатчиками/датчиками протечек.
Фух, похвастался :)
Windows Firefox
 Новосибирск
0
0
Родя
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
по мне - так это перенаворот слегка.
Windows Firefox
 Химки
0
0
Johny
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
мучает вопрос как такие релюшки к щитку крепятся? сам уже на алиэкспрессе присмотрел подобное)
Mac Safari
 Киев
0
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ничего стандартного я не нашел. Пришлось колхозить на коленке.
Взял 2 больших щита ABB и дальше полет фантазии. Время поджимало, рабочие торопили, соответственно делал с оглядкой на "переделаю потом". В результате получилась панель из толстого оргстекла, на которой смонтированы релюхи. Вот фото в процессе монтажа:




Windows Firefox
 Новосибирск
0
0
Пётр
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Оргстекло горит хорошо. Я бы не стал на нём подобную электрику монтировать.
Mac Safari
 Киев
0
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Второй щит:


Windows Safari Chrome
 Краснодар
1
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А общий ИБП поставил? Питание на "грязное" и "чистое" разделил? И еще вопрос: почему релюхи в щитке, а не в розетке? Чисто из экономических соображений? Потом же неудобно переконфигурировать будет. Например, нужно будет добавить розетку и сделать её управляемой.
Я ограничился установкой ИБП 3000ВА, разделением питания на "чистое" от ИБП и "грязное". В каждом блоке розеток есть красная розетка с ключом (чтоб не воткнули обогреватель) и в каждой комнате один светильник, которые подключены через ИБП. Управляемые розетки китайские, с радиомодулем на 433 МГц. Порой отрубают питание и мы с женой не сразу это замечаем, т.к. пищалка на ИБП отключена :)
Mac Safari
 Киев
0
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
ИБП для потребителей в квартире не планировал. Поставлю маленький на ардуинку с расбери, дежурное освещение в коридоре и электрозамок. Скорее всего даже не бесперебойник, а батарею на 12V и зарядное к ней - все вышеописанное - двенадцативольтовое.

Для релюх в розетке нужно место, либо они должны быть маленькими. Релюхами нужно управлять, поэтому еще какой-нибуть радиомодуль/либо провода тянуть. Такие железки уже появляются, но пока редко и дорого.
Добавлять розетку - тоже непростое дело, 220 все равно нужно тянуть, по свежему ремонту вряд ли я решусь на такой подвиг.
Windows Safari Chrome
 Краснодар
1
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Пока не поздно - рекомендую поставить ИБП на всю квартиру. Соседей курощать-милое дело. У всех темно, а у меня телек, комп, интернет и море света. Соседи приходят, спрашивают про свет - отвечаешь "не знаю, у меня все работает". Главное, конечно холодильник с заморозками не страдает. Сейчас розеток тех, что у меня нет, но вот что-то подобное
http://www.aliexpress.com/item/1-12-remote-control-switch-22[...]
Вот более дешевый вариант, он тоже работет
http://www.aliexpress.com/item/-/1938040368.html
Mac Safari
 Киев
0
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Дай ссылку на управляемые розетки pls.
Linux Opera
 Москва
0
0
Леонит Каганофф
А расскажите подробнее, по какому алгоритму и как именно управляет? Навскидку техника интересная, но область практического применения пока не ясна.
Mac Safari
 Киев
1
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Тут на статью на Хабр хватит :)
Честно говоря, еще далеко не все работает, но пилотный вариант меня пока устраивает.

Со светом поступил просто - с проводов от выключателей убрал 220в, до распределительных коробок проложил витую пару, подал 5в и завел на входы ардуины. В случае, если все это дело захочется убрать, за пол дня можно перекоммутировать в обычную схему.
Управляющий сигнал подается на реле с ардуины. Дальше в простом варианте - есть 1 на соответствующем входе с выключателя - подается 1 на управляющий выход реле. В сложном - проходные выключатели, датчики движения … еще не сделал но логику можно наворотить по мере появления хотелок.
Сначала планировал вместо выключателей кнопки (как на звонок) и инвертировать состояние по нажатию, потом решил не издеваться над домашними. Еще идея, от которой я отказался -использовать микросхему DS2408 и читать кнопки по 1wire - в этом случае ардуина была была бы не нужна, но скорость отклика, надежность системы и время старта после отсутствия питания перевесили.

Ардуина подключена по ethernet (модуль ENC28J60), скетчь изображает из себя веб-сервер с простеньким API. По запросу можно получить состояние ламп или розеток (завернутых в json), поставить/снять режим "никого нет дома". Пока не знаю что лучше TCP/IP или как у тебя usb/serial. TCP универсальнее, можно добавлять компоненты в систему и не думать о проводах. Про быстродействие - ниже.
Второй логический кусок системы - аналог Расберри (Olimex A13). На нем Debian, Apache, к нему подключен 1wire c гирляндой термодатчиков DS18B20, отдельно заведу датчики влажности из санузлов и комнат на GPIO разъем (планирую, но пока не сделал). Вообще идея в разделения на критически важные вещи (свет, розетки), и второстепенные (теплый пол, вентиляторы…). Критические - ардуина. В случае чего, ее можно заменить достаточно быстро - взял новую, залил скетч и полетели. Цена устройства - 15$, можно запасную в ящике держать. С A13 дела похуже, там полноценный Linux, SD карточка в rw… Короче, веб-сервер и управление некритическими системами.

Веб интерфейс для смарфонов/планшетов (прямо сейчас не могу показать, буду там на выходных - наделаю скриншотов) показывает состояние света/ розеток/теплого пола, ну и всем этим можно управлять. Планирую повесить андроид-планшет в прихожей, ну и смарт всегда в кармане.
Серверная часть на php - в основном тривиальный код на тему прочитать состояние датчика, фактически прочитать из файла.
Фронтенд на jQuery Mobile/javascript (не очень доволен но пока переделывать рано :) ). Раз в 10 секунд (или по действию пользователя) по ajax запрашивает состояние света/розеток с ардуины и перерисовывает картинку. Вот тут может быть затык по производительности - несколько клиентов могут нагрузить ардуинку и появятся тормоза. Веб сервер на железяке размером с кредитную карточку…
Третий логический модуль - отдельная ардуинка для управлеиня электрозамком. Он еще только в планах, но замок уже стоит и витая пара под RFID читалку проложена. Тут надо очень осторожно, замок без механического ключа. На ардуинке активировал watchdog, отдельна батарея обязательно …даже не знаю что еще. Тоже будет завязана по TCP/IP.
Еще в планах инфракрасные передатчики в гостинной, на кухне и в спальне, чтобы управлять бытовой техникой. Провода проложил, посмотрим, дойдут ли руки.

Теперь об утилитарности всего этого предприятия.
Мне не нравится уходя бегать по квартире и смотреть, все ли я выключил. Я хочу, чтобы дети, вставая ночью в туалет, не шарахались в темноте по коридору, а комфортная подсветка не резала по глазам. Вытяжка в ванной должна работать тогда, когда влажно, а не тогда, когда ее включили/забыли включить/забыли выключить. Теплый пол должен греть тогда, когда мы дома, не спим и на улице холодно, а не по тупому расписанию. Было бы неплохо, если бы кондиционер включался за пол часа до моего приезда, если жарко. Я хочу знать, что у меня протекает под ванной сразу, а не когда соседи снизу потребуют оплатить ремонт. И наверное есть еще масса приятных фокусов, о которых я пока не догадываюсь (например, закрывать шторы, когда включается верхний свет). У меня была возможность заложить основу для этого на этапе прокладки проводки, ну просто грех был не воспользоваться.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Понятно.
Собственно, меня интересовала не техническая реализация, а именно юзабилити. Понятно, что можно управлять водой в кранах и сливом туалетного бачка, но зачем?

Для себя я пока не нашел ответов на эти вопросы, пока нет голосового управления :)
Mac Safari
 Киев
0
0
Dimitris
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А еще некоторые вещи интересно делать самому ;)
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
Да, в сети есть видео, как работает этот девайс:

G2Y0oqZOyl0
Windows Opera
 Подольск
0
0
-
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Таки от Олега или dd-wrt?
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Я не очень понимаю разницу. Указал точную ссылку на ту сборку, которую поставил себе.
Linux Ubuntu Safari Chrome
 Санкт-Петербург
0
0
Николай Лещёв
А чем так хороша прошивка именно от Олега? По сравнению с DD-WRT, OpenWRT, CeroWRT...
Linux Opera
 Mount Laurel
0
0
Леонит Каганофф
Без понятия. Я почитал обзоры, вроде ее хвалили больше. Вообще у меня предубеждение - считаю, что стартап, созданный одним человеком, всегда лучше коллективного творчества.
Linux Ubuntu Firefox
 Саратов
0
0
Xiguan
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Про роутер захватывающе, но тут мужская тема помидоров. Если окно южное, на одно растение надо кадку 8 литров. Если окно НЕ южное, пусть растут как есть, важен процесс. Советую(если окно ЮЖНОЕ) оставить максимум два, и тогда можно расчитывать на несколько помидор.
Windows Safari Chrome
 Киев
0
0
Серж Коцюба
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Кстати таки да, эти звуковухи usb тем и замечательны, что не требуют драйверов ни под XP ни под W7. Реальный плаг-н-плей, такой, каким он, блин, и должен был быть!
Windows Firefox
 Вологда
0
0
secam
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
На каждую хитрую жопу есть свой http://ikey.ru/product/tmd5
Linux Safari Chrome
 Глазов
0
0
Игорь Тарасов
Два момента:

1. почему ext3, а не ext4? В своё время бежал от ext3, как от огня. Оно ж в некоторых ситуациях просто запредельно тормознутое. Например, при удалении больших файлов или при проверке диска (особенно, если что-то не так - это вообще может и на час растянуться).

2. Вместо lighttpd настоятельно рекомендую nginx, который сильно проще в настройке, куда более функциональный и проворный. lighttpd - это прошлый век, да, равно как и ext3.
Linux Opera
 Москва
0
0
Леонит Каганофф
1. Потому что поддержки ext4 там нет.
Кроме того, если не ошибаюсь, ext4 требует много памяти.

2. lighttpd легче. Вы рассуждаете с точки зрения сервера. А надо рассуждать с точки зрения коробочки со 128мб оперативки.
Linux Safari Chrome
 Глазов
0
0
Игорь Тарасов
По lighttpd vs nginx - там при холостом ходе, конечно у lighttpd потребление памяти меньше (разница - пара мегабайт), но при реальном использовании этой разницы уже как бы и нет. Особенно, при использовании cgi-модулей (типа того же php-fcgi).
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
А в чем тогда реальное преимущество nginx перед lighttpd?

При этом термин "реальное использование" я бы тоже уточнил. Реальное использование в качестве высокопосещаемого сайта на маршрутизаторе невозможно по определению. А если раз в сутки заходят друзья за фоткой, или домашние, или срабатывает какой-то скрипт по какой-то надобности - то это все-таки не "реальное", а "домашнее" использование.
Linux Safari Chrome
 Глазов
0
0
Игорь Тарасов
1. Скорость, нетребовательность к ресурсам. Nginx при работе использует два процесса (минимум). Поэтому в холостом режиме требует немного памяти больше чем lighttpd. Один процесс - master, другие - worker. Но в отличие от worker в apache, каждый worker может обрабатывать множество подключений одновременно. Устоявшееся правило заключается в том, что число worker нужно устанавливать равным числу ядер, доступных серверу. Так что нужно 2 процесса. Вот у меня в данный момент на 64битной системе они занимают 5 мегабайт. Посмотрел на паре 32битных систем, нагруженной и в целом свободной там они занимают 5 и 2 мегабайта соответственно. Это я общую память (RES) называю. В роутере с 128 мегабайтами он явно не помешает.

2. Простота настройки. Слегка нужно въехать в идеологию реврайтинга через try_files и прочие удобные штучки, а в остальном - проще некуда, хотя для крайних случаев rewrite там тоже есть, равно как и много всего другого вкусного. Типа, как включить прозрачное сжатие статики? Ответ: gzip on; И такого там полно.

3. Проект активно развивается, финансируется, баги фиксятся, фичи появляются.

Всё это сделало nginx вторым после апача сервером по распространённости ("http://nginx.com/blog/sites-using-nginx-june-2014/"). А если брать топ-10000 самых нагруженных сайтов, то он и вовсе первый ("http://w3techs.com/technologies/cross/web_server/ranking").

Я в разное время перепробовал очень много разных серверов. От nginx самые приятные впечатления из всех. После него возвращаться куда-либо ещё нет никакого желания абсолютно. При этом, он является отличным решением как для высоконагруженных сайтов, так и для простеньких страничек.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Спасибо, так понятнее.
Собственно, с правилами реврайтинга я и в lightttp пока не разобрался. Мне нужно лишь одно правило: чтобы все несуществующие страницы переадресовались на index.php Как его правильно записать в nginx?
Linux Safari Chrome
 Глазов
0
0
Игорь Тарасов
Это как раз очень просто:

location / {
try_files $uri /index.php;
}

То есть, мы говорим nginx попробовать по порядку указанные файлы, и если их нет - пробовать следующие.

Ну и нужно чтобы в конфиге было прописано как обрабатывать php файлы (блок вида location ~ .php$ {...), пример имеется в дефолтных конфигах. Ну и нужен будет php-fpm (если ещё не стоит).

Edit: не понятно, как тут преформатированный текст размещать, [code] не работает, теги тоже. А так - markdown рулит и бибикает, bbcode - прошлый век.
Linux Opera
 Москва
2
0
Mike Novikoff
> В своё время бежал от ext3, как от огня. Оно ж в некоторых ситуациях просто запредельно тормознутое.

Это если при форматировании не была включена опция mke2fs -O dir_index. Она присутствует в ext3 начиная с 2002 года. Только не во всех версиях e2fsprogs была включена _по дефолту_ (но всё равно можно было задать вручную). Например, RH bug #173346 (2005 год), поправлено в RH e2fsprogs-1.39-1 (2006).

Проверить наличие можно через dumpe2fs в строчке 'Filesystem features'. На более-менее современной системе в норме должна быть.
Windows Firefox
 Израиль
1
0
braintunic
> Проверить наличие можно через dumpe2fs

Всё так, только надо использовать "dumpe2fs -h" - а иначе получаешь длиннющую портянку с дескрипторами всех block groups :)
Linux Safari Chrome
 Европа
1
0
Titan
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
По поводу повторяющихся rfid-id значений
У метрошных карточек ULTRLIGHT резмер id - 7 байт - обычно многие читалки читают только первые 4 байта
Чтобы прочитать все 7 байт надо читать содержимое карточки. Первые 7 байт.

всего комментариев: 196

<< предыдущая заметка следующая заметка >>