Два из двух мимо. Программист не начинающий. Не электронщик вообще, ковыряюсь в ардуинках изредка.
wdrakula пишет:
Так какого же хера ты влез со своим мнением? Оспорить профессионала? То, что тебе не стыдно, это ясно, это возрастное, ...но хоть смешно?
А что так агрессивно-то? Цивилизованные люди же, как-никак...
Во-первых, в общем случае, если профессионал несёт херню, то почему бы его и не оспорить. Во-вторых, профессионалы - они на то и профессионалы, что новичками были довольно давно и забыли каково это.
Теперь по теме.
Грамотно писать читаемый и сопровождаемый код можно только медодом ДЕКОМПОЗИЦИИ, основы которого любезно изложил Евгений.
Я что-то где-то говорил против метода декомпозиции как такового? Я говорил, что не надо советовать его новичкам, потому что процедура эта не то чтобы очень простая. И требует весьма неплохо ориентироваться в возможностях и ограничениях и .... писал уже это всё там выше, поищите. Если бы это было не так, то почему слой икры на хлебе архитекторов потолще, чем у кодеров.
В функции выделяют не только повторяющиеся части кода, но даже однократно используемые, ради логики и простоты чтения блока кода верхнего уровня.
Опять же, не надо кричать. Я понимаю, что так делают и даже и не возражаю не разу. Возражаю я против того, чтобы ограничение на количество строк в функции влияло на структуру приложения.
Доступный твоему мозгу пример из практики Ардуино - это вызов (наприммер) lcd.init(). Он производится ровно ОДИН раз в коде. По твоей логике его нужно заменить на содержимое, так ;)
А самый большой SQL-запрос, в котором доводилось ковыряться, был порядка 5000 строк. Вот это ад был, да.
SQL тоже поддерживает процедуры, вы в курсе? Не говоря уж о том, что часто проще воспользоваться временной таблицей или представлением, чтобы разделить огромный запрос с кучей вложенных подзапросов на несколько более коротких логических кусков.
Так что в итоге - пока все так же. То, что вы не видите очевидной бредовости запроса в 5000 строк - не отменяет того, что это так и есть
-- Не умею. Плюсы для меня не родной язык. Стараюсь постигать.
Для программиста не бывает "плюсы не родной". Бывает для других АйТи профессий, веб...прости Господи...дизайнер, СУБД-шник, или еще зверек какой редкий, но не программист. И даже не потому, что С/С++ основна любого программирования, а просто потому, что для програмиста нет вообще разницы, на каком языке писать.
Хотя, если тебе нравится называть себя програмистом, то кто я такой, что запрещать? ;)
Запрещателя у нас запретили ...злые админы :(((.
------------------------
И запомни одну маленькую особенность человеческого восприятия: на форумах чаще всего два статуса: "нуб" и "грамотный". Если хоть раз "зашкварился" , задав вопрос - всё, ...хана! (это шутка конечно! ...но доля правды в ней есть ;) ;) ;) )
-- Не умею. Плюсы для меня не родной язык. Стараюсь постигать.
Для программиста не бывает "плюсы не родной". Бывает для других АйТи профессий, веб...прости Господи...дизайнер, СУБД-шник, или еще зверек какой редкий, но не программист. И даже не потому, что С/С++ основна любого программирования, а просто потому, что для програмиста нет вообще разницы, на каком языке писать.
Хотя, если тебе нравится называть себя програмистом, то кто я такой, что запрещать? ;)
Запрещателя у нас запретили ...злые админы :(((.
В дипломе написано инженер-программист. Разрабатываю программы - приложения СУБД. Стало быть, программист, как ни крути. Про "не родной" - не так выразился наверное. Скорее, основательно подзабытый. От плюсов отошёл году в 2002-2003 где-то и с тех пор не касался, пока не взялся за дуинку.
По поводу того, что на каком языке писать нет разницы тоже не соглашусь. Когда работаешь с языками, не требующими вникать в управление памятью, то навыки этого самого управления имеют свойство утрачиваться, ньюансы и синтаксические конструкции забываются. Как-то так.
Глупых вопросов тоже не стесняюсь. Привык считать, что неведение - не грех. А вот невежество, т.е. считать что камни с неба падать не могут, потому что в небе нет камней (функций больше двухсот строк не бывает, потому что это говнокод) полагаю недостойным.
"узкий специалист подобен флюсу" - шутка старая. Учись, если тебе интересно. Это здорово.
Пример хорошего, просто очень хорошего кода - это современное ядро Линуха. Скачай и посмотри. Это чистый, процедурный Си, не С++. Раньше были куски на С++, теперь их нет.
Если Плюсы - то примеров классного кода полно, собственно Qt, или Гном. Это и читается и сопровождается. Код отточен вынужденно, поскольку разработка большой командой.
Конечно там есть и длинные функции. Это бывает необходимо для целостности.
Но ты не прав в главном - в расстановке приоритетов. Если у тебя выходит длинная функция, то думай как ее сократить.
Знаешь поговорку: "Старайся делать хорошо, плохо - оно само получится!".
Профи может понимать, почему ему необходима длинная функция, у нуба таких задач просто не может встать.
Во-первых, в общем случае, если профессионал несёт херню, то почему бы его и не оспорить.
Для начала нужно быть стопудово уверенным, что это херня, а не просто "ты не понял профессионала потому, сам - чайник". Поэтому первое действие - не оспаривать, а задачть вежливый вопрос - попросить прояснить. это место.
Но это не для тебя - у тебя ж "в дипломе написано".
В общем, написано у тебя может быть всё что угодно, но после "в ардуино нет полиморфизма", sql-запроса в 5 тыс. строк и прочих перлов ... программист из тебя, как из меня фуболист(а футболист из меня ... хотя мяч от судейского свистка отличаю довольно уверено!)
"узкий специалист подобен флюсу" - шутка старая. Учись, если тебе интересно. Это здорово.
Учусь по-маленьку, угумс.
wdrakula пишет:
Но ты не прав в главном - в расстановке приоритетов. Если у тебя выходит длинная функция, то думай как ее сократить.
Поясню немного специфику приложений СУБД. Частенько, блок кода имеет такую структуру: выбираем данные из таблиц, обрабатываем, компонуем, отдаём пользователю; забираем данные от пользователя, обрабатываем, записываем. Так вот это "обрабатываем" - оно специфично для конкретной выборки в конкретной точке бизнес-логики. И всё что могло быть абстрагировано - оно уже абстрагировано, остальное смысла нет - всё равно больше нигде не понадобится. Ну и смысл огород с лишними вызовами городить?
Так его и нет. rtti нет, да и нафиг он в МК не упал. А без него какой полиморфизм? Одно название...
Мда. В ардуино мошт полиморфизма и нет ( што это в данном контексте?). А вот в GCC C++ есть. И никакой RTTI, на который шарпокодеры неистово дрочут, для этого не надо. Совсем.
Так его и нет. rtti нет, да и нафиг он в МК не упал. А без него какой полиморфизм? Одно название...
Вот именно об этом я и говорил. После таких заявлений, не остаётся никаких сомнений в том, что программист из тебя, как из говна пуля, прости, Господи.
Правильно, только Вам бы лучше знать что эти символы обозначают и искать правильные строку и в ней правильные данные. Описание протокола на русском есть вот здесь - там собственно весь формат описан
TinyGPS++ библиотека на есп8266 работает нормально, но я не могу сообразить как записать координаты в переменные для последующих манипуляций (сравнения и соотв.действий)
получаю только 2 числа после точки
double A = gps.location.lng();
В строку тоже самое, 46.01 вместо 46.012947
чувствую что не сложно, но пока не смог найти решение в сети, пните плиз мну в нужную сторону
парни, всё нормально работает, я пробовал ещё больше, касательно примера выше
5157625
4601283
вот такие цифры у меня - т.е прибавили по символу и получили уже 5 после точки - как я писал выше для меня это чрезмерно потому остановился на 4 после точки
код немного почистил от ненужного, цифры веше получил из него
// --- ДАННЫЙ КОД ДЛЯ ESP8266 !!!!!!!!!!!!!!!!
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = D5, TXPin = D6;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud);
}
void loop()
{
int A = gps.location.lat() * 100000;
int B = gps.location.lng() * 100000;
Serial.println(A);
Serial.println(B);
Serial.println();
smartDelay(1000);
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS data received: check wiring"));
}
static void smartDelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}
DetSimen - есть, попробовал - получил два знака после точки - дальше копать не стал
b707 - аналогично )) - как уже говорил выше - мне удобнее без точек юзать переменные
Друзья! спасибо за помощь и общение - сам бы я думал долго))
Скоро ещё возникнут вопросы, планирую на днях собрать прототип своей поделки
Светодиодное табло(простой монохром) выводящий контент в зависимости от места положения и веб интерфейсом для настроек, делаю на 8266 т.к ранее уже мастерил поделки на них, да и на стм32 пока нет времени(а хотелось бы поюзать библиотеку от сообщества). позже, когда нужно будет что то посложнее или как вариант есп32 ещё попробовать приспособить...
как показала практика оборудованных для моих приятелей прикормочных корабликов режим сей совершенно не нужная вещь, особенно если есть хотя бы малое волнение...
Но не безнадёжный, если поставить указатель направления ветра и научить кораблик ходить галсами )))
Слава Богу, сподобился таки я на старости лет узнать, что такое декомпозиция. Теперь понял хоть. :-)
Да ежелип ты был не за 5 тыщ км от Москвы, я б еще и самогончика налил! На бооярышнике и рябинке, для сердца пользительного.
Ты ведь начинающий программист (и электронщик)
Не так.
А самый большой SQL-запрос, в котором доводилось ковыряться, был порядка 5000 строк. Вот это ад был, да.
SQL тоже поддерживает процедуры, вы в курсе? Не говоря уж о том, что часто проще воспользоваться временной таблицей или представлением, чтобы разделить огромный запрос с кучей вложенных подзапросов на несколько более коротких логических кусков.
Так что в итоге - пока все так же. То, что вы не видите очевидной бредовости запроса в 5000 строк - не отменяет того, что это так и есть
Ты ведь начинающий программист (и электронщик)
Это твоя цитата , отсюда.
-- Не умею. Плюсы для меня не родной язык. Стараюсь постигать.
Для программиста не бывает "плюсы не родной". Бывает для других АйТи профессий, веб...прости Господи...дизайнер, СУБД-шник, или еще зверек какой редкий, но не программист. И даже не потому, что С/С++ основна любого программирования, а просто потому, что для програмиста нет вообще разницы, на каком языке писать.
Хотя, если тебе нравится называть себя програмистом, то кто я такой, что запрещать? ;)
Запрещателя у нас запретили ...злые админы :(((.
------------------------
И запомни одну маленькую особенность человеческого восприятия: на форумах чаще всего два статуса: "нуб" и "грамотный". Если хоть раз "зашкварился" , задав вопрос - всё, ...хана! (это шутка конечно! ...но доля правды в ней есть ;) ;) ;) )
Это твоя цитата , отсюда.
-- Не умею. Плюсы для меня не родной язык. Стараюсь постигать.
Для программиста не бывает "плюсы не родной". Бывает для других АйТи профессий, веб...прости Господи...дизайнер, СУБД-шник, или еще зверек какой редкий, но не программист. И даже не потому, что С/С++ основна любого программирования, а просто потому, что для програмиста нет вообще разницы, на каком языке писать.
Хотя, если тебе нравится называть себя програмистом, то кто я такой, что запрещать? ;)
Запрещателя у нас запретили ...злые админы :(((.
По поводу того, что на каком языке писать нет разницы тоже не соглашусь. Когда работаешь с языками, не требующими вникать в управление памятью, то навыки этого самого управления имеют свойство утрачиваться, ньюансы и синтаксические конструкции забываются. Как-то так.
Глупых вопросов тоже не стесняюсь. Привык считать, что неведение - не грех. А вот невежество, т.е. считать что камни с неба падать не могут, потому что в небе нет камней (функций больше двухсот строк не бывает, потому что это говнокод) полагаю недостойным.
"узкий специалист подобен флюсу" - шутка старая. Учись, если тебе интересно. Это здорово.
Пример хорошего, просто очень хорошего кода - это современное ядро Линуха. Скачай и посмотри. Это чистый, процедурный Си, не С++. Раньше были куски на С++, теперь их нет.
Если Плюсы - то примеров классного кода полно, собственно Qt, или Гном. Это и читается и сопровождается. Код отточен вынужденно, поскольку разработка большой командой.
Конечно там есть и длинные функции. Это бывает необходимо для целостности.
Но ты не прав в главном - в расстановке приоритетов. Если у тебя выходит длинная функция, то думай как ее сократить.
Знаешь поговорку: "Старайся делать хорошо, плохо - оно само получится!".
Профи может понимать, почему ему необходима длинная функция, у нуба таких задач просто не может встать.
Для начала нужно быть стопудово уверенным, что это херня, а не просто "ты не понял профессионала потому, сам - чайник". Поэтому первое действие - не оспаривать, а задачть вежливый вопрос - попросить прояснить. это место.
Но это не для тебя - у тебя ж "в дипломе написано".
В общем, написано у тебя может быть всё что угодно, но после "в ардуино нет полиморфизма", sql-запроса в 5 тыс. строк и прочих перлов ... программист из тебя, как из меня фуболист(а футболист из меня ... хотя мяч от судейского свистка отличаю довольно уверено!)
"узкий специалист подобен флюсу" - шутка старая. Учись, если тебе интересно. Это здорово.
Но ты не прав в главном - в расстановке приоритетов. Если у тебя выходит длинная функция, то думай как ее сократить.
после "в ардуино нет полиморфизма" ...
после "в ардуино нет полиморфизма" ...
Мда. В ардуино мошт полиморфизма и нет ( што это в данном контексте?). А вот в GCC C++ есть. И никакой RTTI, на который шарпокодеры неистово дрочут, для этого не надо. Совсем.
после "в ардуино нет полиморфизма" ...
Вот именно об этом я и говорил. После таких заявлений, не остаётся никаких сомнений в том, что программист из тебя, как из говна пуля, прости, Господи.
Для программиста не бывает "плюсы не родной". Бывает для других АйТи профессий
Теперь буду знать, что программистов на Фортране не бывает.
после "в ардуино нет полиморфизма" ...
О, ещё один с дипломом "Осторожно, специалист!". Скрестили ужа с ежом, млять. Инженер-программист оно, эвона как, оказывается.
Теперь буду знать, что программистов на Фортране не бывает.
Как и водителей "жигулей". Таковым можно быть по ситуации, но не по профессии.
Ну, жигули не очень удачная аналогия. Форд - я бы еще понял...
Ну Вы блин даете! ))) Не поленился ипрочитал все что вы тут понаписали)))
Я понял, вам, короче в одном кабаке водку пить нельзя. Вы не только покалечить друг друга можете, но летальные исходы могут быть)))
Не ссорьтесь))) Предлагаю всем вместе сегодня за ужином по стопочке бахнуть "за програмизм!"
Ну а я, если со своими глупыми вопросами буду сюда писать, сильно ругаться не будете?
Максимальная длинна вроде 82 символа!!!
// Если строка не начинается с "$GNGLL",
078
// то она нам не нужна выходим
079
//
080
const
char
* prefix =
"$GNGLL"
;
081
if
(strncmp(str, prefix, strlen(prefix)))
return
false
;
Евгений, разбираю по частям Ваш урок,
можете ответить на мой вопрос, если не трудно?
Я правильно понимаю, что заменив $GNGLL на $GNL, можно читать другую строку?
почему-то теперь в потоке нет строки начинающейся с $GNGLL
И как вставлять код на форум, что бы он был изначально свернут?
Правильно, только Вам бы лучше знать что эти символы обозначают и искать правильные строку и в ней правильные данные. Описание протокола на русском есть вот здесь - там собственно весь формат описан
Друзья! подскажите балбесу...))
TinyGPS++ библиотека на есп8266 работает нормально, но я не могу сообразить как записать координаты в переменные для последующих манипуляций (сравнения и соотв.действий)
получаю только 2 числа после точки
dtostrf(...);
получаю только 2 числа после точки
Вангую, что Вы не получаете, а печатаете два числа после точки. Впрочем, кода нет, потому говорить не о чем.
DetSimen - спасибо! то что нужно
ЕвгенийП - код из примера библиотеки Fullexample, но всё уже работает, спасибо
такая строка получилась
dtostrf(gps.location.lng(),10, 6, outstr);
такой результат
Нашёл более удобное решение своей задачи
int A = gps.location.lng()*10000;
В этом случае избавляюсь от точки и обрезаю данные до 4 символов после неё, этого достаточно для определения места положения и понимания маршрута
Нашёл более удобное решение своей задачи
int A = gps.location.lng()*10000;
В этом случае избавляюсь от точки и обрезаю данные до 4 символов после неё, этого достаточно для определения места положения и понимания маршрута
ну а теперь перевидите по своему удобному решению выше приведенные челябинские координаты
Координаты присутствуют:
xDriver - да какая разница Челябинск суровый или голодный Саратов ))
Мы просто приводим в удобный вид умножая (передвигая точку) - мне хватает четыре числа после точки, определяет до 1 дома
У вас 55.159902, 61.402554 цифры, по крайней мере яндекс так говорит - сделайте так же и получите чельночисловой результат
nt A = gps.location.lng()*10000; - если нужно ещё точнее увеличьте значение множителя
мой код
в INT не влезает
У вас 55.159902, 61.402554 цифры, по крайней мере яндекс так говорит - сделайте так же и получите чельночисловой результат
nt A = gps.location.lng()*10000; - если нужно ещё точнее увеличьте значение множителя
допустим нужно + 1 знак и все вы приехали
чему по вашему А равно будет?
парни, всё нормально работает, я пробовал ещё больше, касательно примера выше
я чет не понимаю или в ардуино инт стал четыре байта?
проясните мужики, а то придется напится!
я использую не ардуино. а esp8266
xDriver - нужен иной повод ))
ну так, ептать, шош ты молчиш...
все равно пойду дерябну.
))) дерябну и я пожалуй за решение )))
не молчу - написал три раза об этом))) в первом и двух предыдущих постах - да. надо немного расслабить мозги нам )))
))) дерябну и я пожалуй за решение )))
не молчу - написал три раза об этом))) в первом и двух предыдущих постах - да. надо немного расслабить мозги нам )))
ты код всё жеж поправь, а то ведь найдётся кто-нибудь и зальёт в нано и будет потом мозг выносить
я использую не ардуино. а esp8266
xDriver - нужен иной повод ))
дак, в ESP памойму уже полноценный double есть, или я ашыбаюс?
sansanich, мне немного смешно с тебя...
Тебе еще в #72 сказали, что все эти цифры после запятой у тебя и так есть... ничего домножать не нужно.
ты просто не умеешь их выводить правильно.
ua6em - Ок
DetSimen - есть, попробовал - получил два знака после точки - дальше копать не стал
b707 - аналогично )) - как уже говорил выше - мне удобнее без точек юзать переменные
Друзья! спасибо за помощь и общение - сам бы я думал долго))
Скоро ещё возникнут вопросы, планирую на днях собрать прототип своей поделки
Светодиодное табло(простой монохром) выводящий контент в зависимости от места положения и веб интерфейсом для настроек, делаю на 8266 т.к ранее уже мастерил поделки на них, да и на стм32 пока нет времени(а хотелось бы поюзать библиотеку от сообщества). позже, когда нужно будет что то посложнее или как вариант есп32 ещё попробовать приспособить...
sansanich, Ваи уже не раз пытались объяснить, что Вы занимаетесь мастурбацией.
Ну, хорошо, вот Ваш код
А теперь выбросьте этот онанизм с умножением и просто напишите
И как? Сколько знаков?
Теперь хочу сделать автопилот для лодки.
как показала практика оборудованных для моих приятелей прикормочных корабликов режим сей совершенно не нужная вещь, особенно если есть хотя бы малое волнение...
Но не безнадёжный, если поставить указатель направления ветра и научить кораблик ходить галсами )))
ЕвгенийП - тема онанизма вам не даёт покоя? - но ничего, с годами пройдёт ))
я писал выше и даже не раз о том что мне нужны именно целые цифры в переменные, для манипуляций с ними
а вы мне про вывод в сериал числа с точкой)) да, четыре числа.... после точки)) если вы комментируете - потрудитесь прочесть о чём речь то
ещё раз благодарю всех не равнодушных за помощь - мой вопрос решён.
тема онанизма вам не даёт покоя? - но ничего, с годами пройдёт ))
Раньше тоже так думал, но годы уходят, а тема остаётся. Как вижу топик типа этого, так ... :-(