Получается проверка на уникальность в java, а в бд его нет ?, если так, тогда странное:
По скольку уникальность выступает требованием для сущности в таблице, тогда перед вставкой необходимо обеспечить атомарный доступ к таблице, ну то есть одно-поточный.
Если не обеспечить эту атомарность, то будет такое
client 1 и client 2 - хотят вставить одну и ту же запись - по идее только один должен суметь но будут вставлены обе записи, по скольку каждый клиент работает в своей сессии/транзакции и включен режим MVCC или SnapShot isolation... read commited
по скольку на начало операции insert никто из них не видит изменений соседа
предварительная проверка в духе (table.field1Constraint1 = value1Constraint1 AND table.field2Constraint1 = value2Constraint1...) OR (...другой констрейнт)
не сработает в этой ситуации, по скольку опять же read commited еще не произошел, да же если insert был, но не было еще commit - то, опять же сосед ничего не узнает
В любом случае как не крути, необходима блокировка, по скольку id - должно быть уникальным значением
блокировка может быть и не явная, например по просить новый id у базы, например sequence (oracle)
ну а поскольку выполняется на стороне java все это, тогда запуск второго экземпляра java - все сломает - конечно, если не пользоваться менеджерами блокировок, но вообще-то менеджеры блокировок есть во многих бд, что бы не изобретать велосипед.
я бы придерживался первого подхода и мапил все сообщения от разных бд в java, меньше головной боли и спокойная ночь обеспечена, после релиза хотя бы по этому пункту
Белила титановые, цинковые и свинцовые - все они сейчас продаются, но в магазинах в основном только титановые. Так вот титановые белила - самые менее насыщенные. А если пишете картину, то белил в обычном случае надо больше чем других, а с этими все резко хуже, их раз в 5-10 больше надо, чем тех же свинцовых. Титановых придется накладывать в несколько слоев, что бы хоть как-то перекрыть краску. Ну а на счет вреда, ... не знаю на счет производства, но у меня есть выборка условно из 20 человек, которые по роду деятельности пользуются белилами на протяжении 30+ лет. Вот отравления желудка или еще ... что связанного именного свинцом/цинком не замечено.
Но ... внезапно в начале 200х их объявили вредными - и фиг купить стало, ... ладно сейчас вроде по проще, а тогда внезапная истерия.
Другой пример, сам и вся группа из 15 человек, и сколько было до меня и после меня, на свинце выколачивали чеканку. т.е. по 6-8 часов, 3-5 раз в неделю, на протяжении года взаимодействовали с опасным свинцом... и вот знаете... что самое опасное при чеканке ? шум
Ну и третье... опасные вещества.... у... свинец... да вот пофиг, при ювелирном деле - пайке, используются флюсы (смесь борной кислоты и буры), а для удаления флюса - соляная кислота - 2..5%. у нас была 2%. так вот банку с водой и кислотой на глаз не отличишь, они обе прозрачные. А проверяли просто - на вкус, или палец засовываешь в банку или просто капаешь на руку и слизываешь. Если кисло становилось, с легким щипанием - то кислота. проходило буквально за 3-5 сек. Кислота во рту быстро смешивается с другими жидкостями и растворяется. А если вспомнить что в желудке кислота и по сильнее будет, то... вообще не страшно.
А вы мне тут страшными пигментами пугаете, ой боюсь, боюсь...
Прямой аналог подгрузки скриптов - это директива import в C++
я имел ввиду загрузку по сети файлов (примитивный случай GET запрос -> и функция eval), а этот пример статической компиляции - и он принципиально другой
Касательно архитектуры приложений - то, это только windows приложения, то есть других не бывает что ли? т.е. приложения под arudino и микроконтроллеры, DOS блин, под крипту (смарт контракты), и т.д. уже не самостоятельные приложения ?
если уж докапыватся, то в частности DLL, Threads, OOP - это все частные случаи технологий, и то что их где-то нет, а где-то по другому реализованы (js) вкусовщина
Есть вообще по фундаментальней понятия, которые осознав школьнику, можно больше не копаться в тонкостях, того или иного языка без прямой необходимости
те же dll в js заменяются на подгрузку скриптов по сети и их выполнение, и принципиальной разницы между dll и загрузкой скриптов нет, а вот утверждать что dll прям вот обязательно для js разработчика, ну странно
Pascal - по мне это традиция обучения, но ее не критикуют, а тот кто критикует, ему достается
Я так же мыслю, если задача обучить программированию, то обучать имеет на языках 1 которые доступны - самый доступный js, он есть в браузере (Chrome,IE,Firefox) на любой современной ОС
2 есть современные ide как браузерах бесплатные, так и stand alone и тут выступают море языков
3 аргументы, про то, что вы не умеете готовить Pascal, ну они мимо, задача же обучить программированию, а не Pascal
4 обучение же не сводится к изучению возможностей Pascal, его вариации OOP, этих парадигм программирования много, я бы хотел узнать чему именно вы учите (программу обучения)
4.1 Для меня в сознательном возрасте было открытие ООП как парадигмы, но вот если кто-то просто и на пальцах показал бы так, надо, а так не надо в программировании, я бы многое бы отдал бы - это я о ценности преподавателя, она просто недооцененная
4.2 Уже значительно позже изучая функциональщину (опять самостоятельно) я смотрю на это ООП как ну... случайный виток в эволюции языков
4.3 Изучая теорию компиляторов и разных парадигм, шаблонов, design pattern, dsl, ddd, ... смотрю на очередные языки (и Delphi рулит), нет... не один язык не является совершенным, все эти споры о языках это просто спор не по сути
А вот суть обучения - подготовить человека к будущему, дать необходимый минимум знаний и убедиться что, он знания взял (на практике), а так же научится добывать знания.
То есть в идеале человек должен понимать - как инструмент (язык программирования), - так и способы создания новых инструментов (теория языков программироавния) - даже если не будет заниматься этим (хотя здравствуйте DSL,DDD, ...) - уметь системно и последовательно мыслить - это к вопросу о логике, математике - знать базовые методы решения типичных задач (алгоритмы, бд, ui, ....) - не застревать в ловушке технологического стека - т.е. иметь кругозор
из все выше перечисленного, выбор первого языка играет точно, не первостепенную роль, а вот делать ставку на первый язык - зависит от ученика все же, от его способностей
кому то и Delphi зайдет, а кому то нужно и по проще, например Python, тем более что и там и там есть базовые понятия как if / while / function / array / recursion
А вот типизация на начальных этапах, так же как и компиляция это усложнение, которое не ускоряет понимание базовых понятий, а скорее на оборот
а я чет думал что базовые концепты, это там циклы, переменные и т.д. но не как dll, dll вообще то же прикладная часть специфичная для windows, и тем более activex, которого под nix днем, с огнем не найдешь.
Так... погодь... то, что скинул мне принципиально не подходит, я вот хочу свой парсер/линтер/компилятор/статический анализатор для Delphi 7 - 2010 написать
И вот из того описания, что скинуто, ну ни как это не сделать, пока что я видел картинку, а chm как понимаю этого описания нет
нет формального описания грамматики для построения AST и правил вывода типов в случае Generic/Variant/и т.д. для вычисления типов этого AST
Вот нету у меня этой chm файла, в этом chm файле описываются все 6 случаев ? в нем все грамматические правила описаны ? они описаны строго, однозначно и непротиворечиво ? так что по ним можно построить парсер и компилятор ?
Получается проверка на уникальность в java, а в бд его нет ?, если так, тогда странное:
По скольку уникальность выступает требованием для сущности в таблице, тогда перед вставкой необходимо обеспечить атомарный доступ к таблице, ну то есть одно-поточный.
Если не обеспечить эту атомарность, то будет такое
client 1 и client 2 - хотят вставить одну и ту же запись - по идее только один должен суметь
но будут вставлены обе записи, по скольку каждый клиент работает в своей сессии/транзакции и включен режим MVCC или SnapShot isolation... read commited
по скольку на начало операции insert никто из них не видит изменений соседа
предварительная проверка в духе (table.field1Constraint1 = value1Constraint1 AND table.field2Constraint1 = value2Constraint1...) OR (...другой констрейнт)
не сработает в этой ситуации, по скольку опять же read commited еще не произошел, да же если insert был, но не было еще commit - то, опять же сосед ничего не узнает
В любом случае как не крути, необходима блокировка, по скольку id - должно быть уникальным значением
блокировка может быть и не явная, например по просить новый id у базы, например sequence (oracle)
ну а поскольку выполняется на стороне java все это, тогда запуск второго экземпляра java - все сломает - конечно, если не пользоваться менеджерами блокировок, но вообще-то менеджеры блокировок есть во многих бд, что бы не изобретать велосипед.
я бы придерживался первого подхода и мапил все сообщения от разных бд в java, меньше головной боли и спокойная ночь обеспечена, после релиза хотя бы по этому пункту
Белила титановые, цинковые и свинцовые - все они сейчас продаются, но в магазинах в основном только титановые. Так вот титановые белила - самые менее насыщенные. А если пишете картину, то белил в обычном случае надо больше чем других, а с этими все резко хуже, их раз в 5-10 больше надо, чем тех же свинцовых. Титановых придется накладывать в несколько слоев, что бы хоть как-то перекрыть краску. Ну а на счет вреда, ... не знаю на счет производства, но у меня есть выборка условно из 20 человек, которые по роду деятельности пользуются белилами на протяжении 30+ лет. Вот отравления желудка или еще ... что связанного именного свинцом/цинком не замечено.
Но ... внезапно в начале 200х их объявили вредными - и фиг купить стало, ... ладно сейчас вроде по проще, а тогда внезапная истерия.
Другой пример, сам и вся группа из 15 человек, и сколько было до меня и после меня, на свинце выколачивали чеканку. т.е. по 6-8 часов, 3-5 раз в неделю, на протяжении года взаимодействовали с опасным свинцом... и вот знаете... что самое опасное при чеканке ?
шум
Ну и третье... опасные вещества.... у... свинец... да вот пофиг, при ювелирном деле - пайке, используются флюсы (смесь борной кислоты и буры), а для удаления флюса - соляная кислота - 2..5%. у нас была 2%. так вот банку с водой и кислотой на глаз не отличишь, они обе прозрачные. А проверяли просто - на вкус, или палец засовываешь в банку или просто капаешь на руку и слизываешь. Если кисло становилось, с легким щипанием - то кислота. проходило буквально за 3-5 сек. Кислота во рту быстро смешивается с другими жидкостями и растворяется. А если вспомнить что в желудке кислота и по сильнее будет, то... вообще не страшно.
А вы мне тут страшными пигментами пугаете, ой боюсь, боюсь...
Извеняюсь, а где операция flatMap?
Как то мало операций, да и не те, filter и map легко можно заменить на flatMap, а fold, size для ограниченный (конечных) итераторов годиться
Хорошая статья, вопрос а как на счет пиксельного монитора ?
Есть несколько статей, которые критикуют эти принципы, без критики SOLID принципов статья будет не полной
https://habr.com/ru/articles/555862/
https://habr.com/ru/companies/skbkontur/articles/260781/
https://temofeev.ru/info/articles/istoriya-vozniknoveniya-cupid-kritika-solid/
https://ru.stackoverflow.com/questions/551346/Когда-НЕ-нужно-использовать-solid
я имел ввиду загрузку по сети файлов (примитивный случай GET запрос -> и функция eval), а этот пример статической компиляции - и он принципиально другой
Касательно архитектуры приложений - то, это только windows приложения, то есть других не бывает что ли? т.е. приложения под arudino и микроконтроллеры, DOS блин, под крипту (смарт контракты), и т.д. уже не самостоятельные приложения ?
если уж докапыватся, то в частности DLL, Threads, OOP - это все частные случаи технологий, и то что их где-то нет, а где-то по другому реализованы (js) вкусовщина
Есть вообще по фундаментальней понятия, которые осознав школьнику, можно больше не копаться в тонкостях, того или иного языка без прямой необходимости
те же dll в js заменяются на подгрузку скриптов по сети и их выполнение, и принципиальной разницы между dll и загрузкой скриптов нет, а вот утверждать что dll прям вот обязательно для js разработчика, ну странно
Я отвечу, позиция понятна и я с ней согласен
Pascal - по мне это традиция обучения, но ее не критикуют, а тот кто критикует, ему достается
Я так же мыслю, если задача обучить программированию, то обучать имеет на языках
1 которые доступны - самый доступный js, он есть в браузере (Chrome,IE,Firefox) на любой современной ОС
2 есть современные ide как браузерах бесплатные, так и stand alone и тут выступают море языков
3 аргументы, про то, что вы не умеете готовить Pascal, ну они мимо, задача же обучить программированию, а не Pascal
4 обучение же не сводится к изучению возможностей Pascal, его вариации OOP, этих парадигм программирования много, я бы хотел узнать чему именно вы учите (программу обучения)
4.1 Для меня в сознательном возрасте было открытие ООП как парадигмы, но вот если кто-то просто и на пальцах показал бы так, надо, а так не надо в программировании, я бы многое бы отдал бы - это я о ценности преподавателя, она просто недооцененная
4.2 Уже значительно позже изучая функциональщину (опять самостоятельно) я смотрю на это ООП как ну... случайный виток в эволюции языков
4.3 Изучая теорию компиляторов и разных парадигм, шаблонов, design pattern, dsl, ddd, ... смотрю на очередные языки (
и Delphi рулит), нет... не один язык не является совершенным, все эти споры о языках это просто спор не по сутиА вот суть обучения - подготовить человека к будущему, дать необходимый минимум знаний и убедиться что, он знания взял (на практике), а так же научится добывать знания.
То есть в идеале человек должен понимать
- как инструмент (язык программирования),
- так и способы создания новых инструментов (теория языков программироавния) - даже если не будет заниматься этим (хотя здравствуйте DSL,DDD, ...)
- уметь системно и последовательно мыслить - это к вопросу о логике, математике
- знать базовые методы решения типичных задач (алгоритмы, бд, ui, ....)
- не застревать в ловушке технологического стека - т.е. иметь кругозор
из все выше перечисленного, выбор первого языка играет точно, не первостепенную роль, а вот делать ставку на первый язык - зависит от ученика все же, от его способностей
кому то и Delphi зайдет, а кому то нужно и по проще, например Python, тем более что и там и там есть базовые понятия как if / while / function / array / recursion
А вот типизация на начальных этапах, так же как и компиляция это усложнение, которое не ускоряет понимание базовых понятий, а скорее на оборот
а я правильно понял, что без знания написания dll front-end разработчик уже не может выполнять свои обязанности ?
а я чет думал что базовые концепты, это там циклы, переменные и т.д. но не как dll, dll вообще то же прикладная часть специфичная для windows, и тем более activex, которого под nix днем, с огнем не найдешь.
да и последнее время ведется спор о ООП
Разве для front-end написание DLL является необходимостью, без которого он не сможет выполнять обязанности ?
Разве для Delhi | Pascal знание React или Vue является необходимостью ?
Так... погодь... то, что скинул мне принципиально не подходит, я вот хочу свой парсер/линтер/компилятор/статический анализатор для Delphi 7 - 2010 написать
И вот из того описания, что скинуто, ну ни как это не сделать, пока что я видел картинку, а chm как понимаю этого описания нет
нет формального описания грамматики для построения AST и правил вывода типов в случае Generic/Variant/и т.д. для вычисления типов этого AST
Как то сильно за всех отвечать, если у тебя не было потребности, то у других, по мимо меня были, вот например
https://en.delphipraxis.net/topic/5676-pc-specs-for-delphi/
https://stackoverflow.com/questions/171827/looking-for-a-complete-delphi-object-pascal-syntax
http://dgrok.excastle.com/
https://groups.google.com/g/comp.lang.pascal.delphi.misc/c/LT_hN86lEh0/m/-fHdf743PSYJ
Вот нету у меня этой chm файла, в этом chm файле описываются все 6 случаев ? в нем все грамматические правила описаны ? они описаны строго, однозначно и непротиворечиво ? так что по ним можно построить парсер и компилятор ?
Ну так вопрос не к тому что ты знаешь, а к тому где о этом официально почитать, что бы иметь первоисточник знаний
т.е. хочешь сказать, что школьников учат писать код без RTL ?
Если есть в языке способ отстрелить себе ногу, то утверждать при этом что это нет - то же странно
Ага, и где эти официальные правила ?
то, что не давали про Variant, тут еще вопрос, на сколько это здраво - аналогия: как дать электроинструмент и не объяснить технику безопасности
В том же Rust есть обсуждение создания спецификации https://users.rust-lang.org/t/where-is-the-rust-language-specification/42047/6 но ее на данный момент нет, тот же косяк что и у Delphi, хотя сами разработчики Rust о этом обсуждают и двигаются в этом направлении https://blog.rust-lang.org/inside-rust/2023/11/15/spec-vision.html
Для JavaScript есть - вот https://tc39.es/ecma262/
Для C++ спецификация называется стандарт C++ на указанный год https://isocpp.org/std/the-standard
Для TypeScript был, но сама MS походу забила, оставив github репу
Для Go тоже есть официальная спека https://go.dev/ref/spec
Так, что наличие спеки для языка это нормально, отсутствие - встречается, только вот отсутствие спеки - это ни разу не достоинство языка