Почитал новости, комментарии, похоже у меня одного уровень паранои в «full” выставлен. Меня с самого начала всей этой контернизации беспокоит что все дружно с воплями ломятся ставить технологии завязанные на одну компанию: что докер, что mom, что GitHub
С последним вообще песня взяли. Технологию, которая рассчитана на распределённую работу «из коробки» и кусая кактус запихнули в решение зависящее от одного поставщика.
все это без относительности к политической ситуации ставит всю экосистему под удар.
Давно пора было писать тьюториалы где все не с dockerHub по умолчанию тащиться, а свой репозитарий поднимается и с ним все работает.
А в личных проектах предпочитаю Fossil который из коробки весь функционал имеет и хоститься на любом жестком диске.
Но таких как я меньшинство- все свои hello-world проекты норовят сразу на GitHub выкладывать…
Кстати заметил что у многих коллег, git- это GitHub/gitlab и идея прислать патч многих вводит в ступор….
1000 датафидов спокойно отображается в 1000 SQLite файлов. Так что SQL вам дозволит проводить обработку. В этом случае все-равно будет многопоточность приложение и большинство данных будут просто держаться в памяти. База нужна в редких случаях чтобы исторические данные подтянуть. А там где реальный HFT ( когда считают наносекунды потерянные на передачу данных по оптическому каналу) все равно будут использовать что-то своё и узко специализированное
Если вы делаете маленькое приложение на узкую аудиторию или если вы делаете MVP для проверки гипотезы, то можно смело выбирать NoSQL-решение. Такие базы быстрые, с ними проще работать, они легко масштабируются. А если проект растет как на дрожжах — NoSQL можно быстро переписать на SQL
Удачи вам NoSQL в SQL переделывать….
Похоже автор вообще в руках баз данных не держал. Сравнивать абстрактный nosql с абстрактным sql на техническом ресурсе это уже за гранью добра и зла
если свести всю статью к одной фразе:
Не знаете как делать- берите SQLite.
Будет шанс смигрироватт на PostgreSQL без большой головной боли. Или раскидаете данные по разным SQLite базам - скорее всего вы не Google и не FB и SQLite покроет потребности всех ваших 10-100 клиентов
Тут в заголовке статьи фото из фильма про Джимми Хоффману который возглавлял профсоюз водителей. Какие там правовые условия? Дикий запад в чистом виде. Просто в Штатах люди не боялись жизнью за идею/деньги рисковать. Поэтому профсоюзы сильные. В Росси исторически сплав партии и профсоюзов. Там никто супротив начальства выступать не будет.
Вышеприведенный код не призыв переписать все на С. А пример реализации такого же метода написанный давным давно людьми которые понимаю «в колбасных обрезках» сравните их метод и то что нагромоздили в статье.
Использование C++ должно упростить интерфейс - так как благодаря наличию конструктора /декструктора не надо явно высвобождать память. Вместо этого нам представили какой-то дичайший код, которым не ясно как пользоваться, прикрываясь заявлением о том что стандартный слишком медленный.
Стандартная библиотека содержит функцию FGETS, совершен-
но аналогичную функции GETLINE, которую мы использовали на
всем протяжении книги. В результате обращения
FGETS(LINE, MAXLINE, FP)
следующая строка ввода (включая символ новой строки) считы-
вается из файла FP в символьный массив LINE; самое большое
MAXLINE_1 символ будет прочитан. Результирующая строка за-
канчивается символом \ 0. Нормально функция FGETS возвращает
LINE; в конце файла она возвращает NULL. (Наша функция
GETLINE возвращает длину строки, а при выходе на конец файла
нуль).
Предназначенная для вывода функция FPUTS записывает
строку (которая не обязана содержать символ новой строки) в
файл:
FPUTS(LINE, FP)
Чтобы показать, что в функциях типа FGETS и FPUTS нет
ничего таинственного, мы приводим их ниже, скопированными
непосредственно из стандартной библиотеки ввода-вывода:
#INCLUDE <STDIO.H>
CHAR *FGETS(S,N,IOP) /GET AT MOST N CHARS FROM IOP/
CHAR *S;
INT N;
REGISTER FILE *IOP;
(
REGISTER INT C;
REGISTER CHAR *CS;
CS = S;
WHILE(--N>0&&(C=GETC(IOP)) !=EOF)
IF ((*CS++ = C)=='\N')
BREAK;
*CS = '\0';
RETURN((C==EOF && CS==S) 7 NULL : S);
)
FPUTS(S,IOP) /PUT STRING S ON FILS IOP/
REGISTER CHAR *S;
REGISTER FILE *IOP;
(
REGISTER INT C;
WHILE (C = *S++)
PUTC(C,IOP);
)
Не пробовали создать обычную html страницу и правильно прописать типы полей, вместо огорода который любят городить дизайнеры. И О чудо! В большинстве случаев телефон покажет нужную клавиатуру, «без рекламы и смс»
Вроде для европейский пользователей это не должно быть проблемой. Евросоюз обязал Apple допустить другие магазины приложений и возможность оплаты минуя их AppStore.
Так что придётся Телеграмму Юрий. Лицо в Европе регистрировать :)
Причём и под Linux и под windows.собственно говоря из-за Linux все и началось. Надо было писать под обе системы и очень не хотелось привыкать к разным редакторам. Под виндой в то далекое время сидел на SlickEditor. Может он жив ещё не знаю :)
Чем же «мобильный QA” от не «мобильного» отличается? Тем более что дальше вы говорите:
« и тест упадёт хотя функционал работает» исходя из этой фразы можно предположить что функционал должен работать и в мобильной и в десктопный версии.
Мне кажется что ваша позиция обусловлена тем, что вы и заказчик и исполнитель в одном лице. Все меняется если разработка отдана на аутсорс одной компании а QA тестирование делается своими силами или силами другой компании. Тогда у разработчика нет возможности сказать «это не баг -это фича» поскольку QA проверяют то что написано в тесте а не то что разработчик/ аналитик подумал. Когда у вас за Х*1000 тестов, ваши подходы не сработают. Тест должен один в один совпадать со спецификацией.
Иначе будет такой треш, что сам черт ногу сломит.
P.S. В рамках собеседования я ответил на ваш вопрос? :)
Вообще-то: Other names for this idiom include Constructor Acquires, Destructor Releases (CADRe)[9] and one particular style of use is called Scope-based Resource Management (SBRM).[10]
Если вы не передаёте все параметры в конструкторе, то скорее всего resource acquisition случается в коде. Что нарушает идиому.
Как писал в качестве примера C sharp и иже с ним где после создания объекта 30 строчек инициализации
« В задаче сказано, что это поисковая выдача вакансий, значит, скорее всего, она состоит из одинаковых по коду элементов, по умолчанию имеющих одинаковый идентификатор, что приведет к ошибке автотеста, либо к проверке не того элемента. Так же совершенно неправильно явно указывать количество скроллов, так как UI автотесты могут гоняться на разных разрешениях экранов. Сегодня на экран помещается 2–3 вакансии, а завтра 5–6, и тест упадет, хотя функционал работает ». Он исправился и в конце выдал кусочек идеальнейшего кода.»
Вот таких собеседователей надо гнать поганой метлой.
Сначала дели конкретное задание для теста:
Задача: необходимо проверить поисковую выдачу, в поисковой выдаче — карточки вакансий. Тебе нужно проверить корректность 21-й карточки в выдаче, при условии, что на 1 экран помещается в среднем 2-3 карточки. Как ты автоматизируешь эту проверку?
А потом сказали что надо было решать совершенно другую задачу.
Возможно это и есть причина почему на Хабре за все эти годы баги не вычистили.
Вам аналитик/ или кто-то там поставил задачу -автоматизировать тест. С конкретными условиями, а потом говорит что тест «не торт» и писать надо было другое.
Если в условиях теста сказано что выдают по 2-3 карточки значит выдача по 3-4 или иному числу- ошибка- тест должен упасть.
Если сказали что надо 21/2 или 21/3 скроллом значит их столько и должно быть.
Если у вас задача протестировать алгоритм выдачи, то не важно сколько элементов выдал запрос. Тогда можно тупо тестировать первый элемент.
Если нужно просто протестировать скроллинг то нужно тестировать 1- вый, последний в первом экране, первый на втором экране, последний на втором экране и последний элемент в выдаче.
Если надо тестировать алгоритм разбиения на страницы то так и надо ставить задачу:
Есть поисковая выдача состоящая из M, нет M мало, пусть будет N, элементов. Алгоритм разбивает ее на страницы по K Элементов проверьте правильность разбиения на страницы при N: 1,2,3, 16,255,256,1023,1024,1025 элементов и k: 1,2,3,5,7,9,10,11,31,32,64,65,100,101…
Почитал новости, комментарии, похоже у меня одного уровень паранои в «full” выставлен. Меня с самого начала всей этой контернизации беспокоит что все дружно с воплями ломятся ставить технологии завязанные на одну компанию: что докер, что mom, что GitHub
С последним вообще песня взяли. Технологию, которая рассчитана на распределённую работу «из коробки» и кусая кактус запихнули в решение зависящее от одного поставщика.
все это без относительности к политической ситуации ставит всю экосистему под удар.
Давно пора было писать тьюториалы где все не с dockerHub по умолчанию тащиться, а свой репозитарий поднимается и с ним все работает.
А в личных проектах предпочитаю Fossil который из коробки весь функционал имеет и хоститься на любом жестком диске.
Но таких как я меньшинство- все свои hello-world проекты норовят сразу на GitHub выкладывать…
Кстати заметил что у многих коллег, git- это GitHub/gitlab и идея прислать патч многих вводит в ступор….
Не ищите умысла в том что можно объяснить разгильдяйством. :)
Хотя с комментарием согласен
1000 датафидов спокойно отображается в 1000 SQLite файлов. Так что SQL вам дозволит проводить обработку. В этом случае все-равно будет многопоточность приложение и большинство данных будут просто держаться в памяти. База нужна в редких случаях чтобы исторические данные подтянуть. А там где реальный HFT ( когда считают наносекунды потерянные на передачу данных по оптическому каналу) все равно будут использовать что-то своё и узко специализированное
Похоже чат-ГПТ голлюцинирует….
Если вы делаете маленькое приложение на узкую аудиторию или если вы делаете MVP для проверки гипотезы, то можно смело выбирать NoSQL-решение. Такие базы быстрые, с ними проще работать, они легко масштабируются. А если проект растет как на дрожжах — NoSQL можно быстро переписать на SQL
Удачи вам NoSQL в SQL переделывать….
Похоже автор вообще в руках баз данных не держал. Сравнивать абстрактный nosql с абстрактным sql на техническом ресурсе это уже за гранью добра и зла
если свести всю статью к одной фразе:
Не знаете как делать- берите SQLite.
Будет шанс смигрироватт на PostgreSQL без большой головной боли. Или раскидаете данные по разным SQLite базам - скорее всего вы не Google и не FB и SQLite покроет потребности всех ваших 10-100 клиентов
Тут в заголовке статьи фото из фильма про Джимми Хоффману который возглавлял профсоюз водителей. Какие там правовые условия? Дикий запад в чистом виде. Просто в Штатах люди не боялись жизнью за идею/деньги рисковать. Поэтому профсоюзы сильные. В Росси исторически сплав партии и профсоюзов. Там никто супротив начальства выступать не будет.
И чем ваш код тогда лучше стандартной функции C? Даже не С++?
Вышеприведенный код не призыв переписать все на С. А пример реализации такого же метода написанный давным давно людьми которые понимаю «в колбасных обрезках» сравните их метод и то что нагромоздили в статье.
Использование C++ должно упростить интерфейс - так как благодаря наличию конструктора /декструктора не надо явно высвобождать память. Вместо этого нам представили какой-то дичайший код, которым не ясно как пользоваться, прикрываясь заявлением о том что стандартный слишком медленный.
Керниган, Ричи. Язык программирования С
Не благодарите.
Пример как писать нормальный интерфейс.
И что мешает его завести? :)
Welcome to real world.
Облачные технологии это не отсутствие компьютера/сервера. Это компьютер/сервер у кого-то Другово.
Сетевой диск это не «как обычный диск только побольше» это другая система и другой уровень проблем.
Товарищи авторы, не издевайтесь над читателями.
Думал найти нормальный обзор уники а тут похоже опять чат ГПТ трудился не покладая рук :(
Не пробовали создать обычную html страницу и правильно прописать типы полей, вместо огорода который любят городить дизайнеры. И О чудо! В большинстве случаев телефон покажет нужную клавиатуру, «без рекламы и смс»
Вроде для европейский пользователей это не должно быть проблемой. Евросоюз обязал Apple допустить другие магазины приложений и возможность оплаты минуя их AppStore.
Так что придётся Телеграмму Юрий. Лицо в Европе регистрировать :)
А я оценил комбинацию в Vim dd, а потом . Или 10. :) очень ускоряет процесс стирания кода :)
Автор судя по пассажу «я нажимаю определённую комбинацию клавиш и …»
Писал явно ChatGpt.
Либо надо писать какую комбинацию клавиш нажимает автор:
У меня на сочетание клавиш …. Настроен вызов макроса который ….
Поскольку нельзя нажать «неопределенную комбинацию клавиш» :)
здравствуйте, меня зовут Вася и я использую vim
Причём и под Linux и под windows.собственно говоря из-за Linux все и началось. Надо было писать под обе системы и очень не хотелось привыкать к разным редакторам. Под виндой в то далекое время сидел на SlickEditor. Может он жив ещё не знаю :)
Только вчера про чат-гпт статьи писали и вот тебе бабушка и Юрьев день, снова она.
Вы бы хоть примеры ответов добавили.
Чем же «мобильный QA” от не «мобильного» отличается? Тем более что дальше вы говорите:
« и тест упадёт хотя функционал работает» исходя из этой фразы можно предположить что функционал должен работать и в мобильной и в десктопный версии.
Мне кажется что ваша позиция обусловлена тем, что вы и заказчик и исполнитель в одном лице. Все меняется если разработка отдана на аутсорс одной компании а QA тестирование делается своими силами или силами другой компании. Тогда у разработчика нет возможности сказать «это не баг -это фича» поскольку QA проверяют то что написано в тесте а не то что разработчик/ аналитик подумал. Когда у вас за Х*1000 тестов, ваши подходы не сработают. Тест должен один в один совпадать со спецификацией.
Иначе будет такой треш, что сам черт ногу сломит.
P.S. В рамках собеседования я ответил на ваш вопрос? :)
Вообще-то: Other names for this idiom include Constructor Acquires, Destructor Releases (CADRe)[9] and one particular style of use is called Scope-based Resource Management (SBRM).[10]
Если вы не передаёте все параметры в конструкторе, то скорее всего resource acquisition случается в коде. Что нарушает идиому.
Как писал в качестве примера C sharp и иже с ним где после создания объекта 30 строчек инициализации
« В задаче сказано, что это поисковая выдача вакансий, значит, скорее всего, она состоит из одинаковых по коду элементов, по умолчанию имеющих одинаковый идентификатор, что приведет к ошибке автотеста, либо к проверке не того элемента. Так же совершенно неправильно явно указывать количество скроллов, так как UI автотесты могут гоняться на разных разрешениях экранов. Сегодня на экран помещается 2–3 вакансии, а завтра 5–6, и тест упадет, хотя функционал работает ». Он исправился и в конце выдал кусочек идеальнейшего кода.»
Вот таких собеседователей надо гнать поганой метлой.
Сначала дели конкретное задание для теста:
Задача: необходимо проверить поисковую выдачу, в поисковой выдаче — карточки вакансий. Тебе нужно проверить корректность 21-й карточки в выдаче, при условии, что на 1 экран помещается в среднем 2-3 карточки. Как ты автоматизируешь эту проверку?
А потом сказали что надо было решать совершенно другую задачу.
Возможно это и есть причина почему на Хабре за все эти годы баги не вычистили.
Вам аналитик/ или кто-то там поставил задачу -автоматизировать тест. С конкретными условиями, а потом говорит что тест «не торт» и писать надо было другое.
Если в условиях теста сказано что выдают по 2-3 карточки значит выдача по 3-4 или иному числу- ошибка- тест должен упасть.
Если сказали что надо 21/2 или 21/3 скроллом значит их столько и должно быть.
Если у вас задача протестировать алгоритм выдачи, то не важно сколько элементов выдал запрос. Тогда можно тупо тестировать первый элемент.
Если нужно просто протестировать скроллинг то нужно тестировать 1- вый, последний в первом экране, первый на втором экране, последний на втором экране и последний элемент в выдаче.
Если надо тестировать алгоритм разбиения на страницы то так и надо ставить задачу:
Есть поисковая выдача состоящая из M, нет M мало, пусть будет N, элементов. Алгоритм разбивает ее на страницы по K Элементов проверьте правильность разбиения на страницы при N: 1,2,3, 16,255,256,1023,1024,1025 элементов и k: 1,2,3,5,7,9,10,11,31,32,64,65,100,101…