Язык Go (Golang)

Тема в разделе "WASM.HEAP", создана пользователем Fail, 6 сен 2017.

  1. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Всё, с этого я выпал под стол. Критерии "хорошей архитектуры" перечислите, пожалуйста.
     
  2. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    SadKo, Нет с биг дата не имел дело. Вероятно, что там нужна скорость, но опять таки позволь заметить не везде. Если мне нужно гуи которое настраивает сервак или другие полезные утилиты, скорость в таких инструментах мне не нужна. Мне нужно в этих случаях скорость разработки этих гуев.
    Что касается разработки игр, то да, скорость там важна. Но опять таки, думаю что они юзают уже хорошо зарекомендовавшие себя паттерны, свои собственные, а не городят для каждой игры, что-то принципиально новое. О реинжиниринге не было речи. Рефакторингом по моему опыту, у программеров часто не хватает времени заниматься. Реинжиниринг для меня это reverse engineering это совсем другая песня. В другом значении я не сталкивался с этим.
     
  3. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    на мой взгля очевидно же я уже описал.
    -легко изменяемо
     
  4. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    Ну вот например, давай так. Что ты используешь для доступа к базам данных. Базы данных это тяжелый случай, так как по своему характеру базы данных близки к процедурному программированию в силу того, что доступ к данным приходится получать из таблицы. Думаю понятно о чем я. Так какой шаблон используешь для получения данных из базы данных?
    У меня выработан шаблон по которому я получаю любые данные из любой базы данных, меняется только небольшая часть этой архитектуры экономя мне время.
     
  5. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Ну так с этого и надо начинать. Формочки и кнопочки лабать - это вам не закачивать параллельно логи предоставления сервиса пользователям в 8 СУБД, где нагрузка исчисляется дисятками миллионов записей в час.
    Вы же пытаетесь возвести свой подход в абсолют, а это в корне неверное решение. Сначала понимаем проблему - затем строим стратегию её решения, после чего уже пишем код. Формошлёпы и кнопкодавы в принципе этого не способны сделать. Здесь нужны дядьки посуровее, с большим опытом разработки различных приложений.

    Different hardware platforms - different solutions.

    Это плохое владение терминологией и понимание сути вещей. Вы смешали рефакторинг, реинжиниринг и реверс-инжриниринг между собой.
     
  6. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Ой, только не говорите, что вы там используете Hibernate. Это днище.
    Если нам нужно вытянуть одну запись из БД - мы просто задействуем механизм рефлексии и аннотации. Метод занимает от силы пару экранов кода, при этом сам автоматом распихает соответствующие поля по геттерам-сеттерам. Считайте это как паттерн factory method.
    Если нужно выдернуть блок данных из БД - то также можно задействовать паттерн builder, чтобы собрать параметризованный запрос и выполнить его. Дальше получаем ResultSet и делаем всё, что захотим с ним.
     
  7. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    SadKo, ты ошибаешься, я говорил о профайлинге и рефакторинге, не привязывай ко мне термины о которых я не говорил.
    Different hardware platforms - different solutions.
    Это высказывание мне не ясно. Что значит для программера даже высоконагруженного сервака hardware?
    Мне казалось, что они юзает в 3 колце, и в ядро где и прячется хардваре он не имеет доступа. Или ты имеешь в виду различные райд системы, так опять они юзаются без ведома прикладного программера. Или же ты имеешь в виду что они лезут в ассемблерный код и там улучшают производительность?
     
  8. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    SadKo,
    ResultSet
    ResultSet ты серьезно? Ну это слишком процедурно для моего вкуса. Предпочитаю Strategy и чтобы возвращал мне объекты классов. А ковыряение только в одном месте в одном классе, где я с ResultSet и парсю, создавая объект, который получаю подписавшись на событие. Как-то так. Наверно это не быстро, но позволяет мне контроллировать что не быстро и избавлятся от этого в стройном приложении. Не находишь, что это удобней чем лазить по структурному быстрому коду, значение которого знает только один программер в мире?
     
  9. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    SadKo, и последнее на сегодня и важное. Давай-ка разберемся сэтими дядьками которые делают высокоскоростной код. Вопросы такие:
    -Они не юзают свои шаблоны?
    -Они не юзают никакие шаблоны?
    -Если они шаблоны вообще не юзают, что же они процедурно программируют?
    (скорее всего наверное используют мултитрейдинг, думаю этим в основном эти товарищи берут)
    Что они классы вообще не используют во имя его величества скорости? И еще наверное они большие доки в concurrent data changes в базах данных. Это когда надо чтобы много потоков одновременно записывали в одну таблици. Здравый смысл подсказывает эти вектора интереса
     
    Последнее редактирование: 10 дек 2017
  10. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    SadKo, Слово реинжиниринг ты ввел сам и попытался привязать это слово ко мне и обвинить в незнании терминологии. По-моему это не этичное поведение и достойно извинения, не находишь, дядя?
     
  11. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    Тут надо бы пояснить. Забавно получается, тут мне указывают на то что я говнокодер
    и понятия не имею о таких высоких материях как высоконагруженные
    приложения, а типа гуишками занимаются лузеры и недопрограммисты.
    А лавры крутого джава программера меня собственно не прельщают.
    (хотя хорошо платят :)
    Открою маленький(но только часть ее) секрет. Джавой я стал
    заниматся не от хорошей жизни. Я пришел к выводу, что возможностей
    Иды мне маловато(по крайней мере то что предлагается бесплатно и по
    умолчанию) мне нужно несколько другие фишки. Реализовывать это
    на питоне не камильфо, так как приложение, которое мне нужно
    требует достаточно сложное и программить на питоне это
    будет непросто. Поэтому выбор пал на джава, а не на шарп,(
    думаю причины понятны). Поэтому, да чуваки, мне нужно говно
    приложение на яве, но которое будет изменять ассемблерный код и
    не только. вот и все, почему я потратил год с небольшим на разработку
    приложений на джава. Пришлось не от хорошей жизни углубится в дебри
    Code complete and Design Pattern. Да, я сделал пару серваков, которые
    принимают запросы моего приложения. Да, оно не думаю, что скоростное,но
    думаю что этого мне более чем достаточно. Ежели бы я хотел создавать скоростные
    приложения для доступа к базам данных и к серверу, то уж поверьте дорогои
    друзья, здесь бы не искал инфу, а шел бы на целевой сайт, где люди
    обсуждают такие вещи. Вот такой обзор, собственно позиции, где я, вы
    и все остальное. :)
     
  12. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    и в данный момент, я занимаюсь подготовкой к возможному созданию убийцы Телеграмм мессенджера.
    Это возможно, но вопрос во времени. Желательно для этого команда. :) (Знаю, знаю сейчас начнется...)
     
  13. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    Смотри, Садко, предлагаю тебе честный батлл, чтобы не голословить
    и не говорить у кого толще и длиннее.

    Условия такие:
    1) Каждый из нас предоставляет код, пусть это будет
    а) сервер(только часть принятия соединений) обработку данных можно опустить.
    б) способ работы с базами данных.
    Весь этот код у меня под рукой. код должен быть рабочий(либо юнит тест либо просто
    static void main(String [] args) думаю ты знаешь о чем это я.
    2) Мы просто и по-деловому без оскорблений обсуждаем код друг друга и видим
    кто на чем стоит. Критикуем так сказать без личностей а просто
    как джентельмены. Далее указываем на слабые и сильные места.
    Пусть честной народ будет нам судьей.
    3) Баттл должен быть таким:
    Если например ты первый предоставляешь код сервака с пояснениями,
    то тогда до начала твоего описания я должен буду выложить
    шифрованный зип файл, который сможет скачать любой на васме,
    но который никто не сможет расшифровать пока я не выдам ключа
    Для чего? Думаю очевидно, чтобы не обвинили в плагиате.
    То есть может получится так, что наши коды схожи и тогда
    у тебя может возникнуть сомнения, что я не сплагиатил твой
    код, таким образом становится неясным, то ли мой код был
    подобен твоему, либо я смухлевал.

    4) сначала я даю шифрованный зип
    потом ты даешь свой код и объесняешь как он работает.
    Затем ты даешь шифрованный зип с работой базы данных,
    а я предоставляю свой код с объяснениями.


    5) На сборы сутки.

    6) никаких оскорблений и сарказма, с твоей и моей стороны, за других мы
    не ручаемся. При любом исходе.

    7) Это очевидно, что код должен быть на джава.

    Согласен?
     
  14. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Одну и ту же программу можно написать разными способами, и она будет выдавать одинаковый результат при одинаковых входных данных. Однако вы переносите эту программу на другую платформу и с ужасом обнаруживаете, что она работает в 10 раз медленнее, чем ожидалось. Приходится переписывать программу с поправкой под новую платформу, то есть осуществлять реинжиниринг (что такое рефакторинг - я уже вам выше написал). Тут даже не речь об асм-коде, от изменения представления структуры данных в памяти многое зависит.

    А теперь почитайте про рефлексию и аннотации. В Java можно всего лишь передать класс в метод, а на выходе получить объект этого класса с заполненными полями. При этом, сам запрос можно сформировать внутри этого единственного метода, который вытянет данные таблицы.

    А теперь представьте ситуацию: вам надо обновить 1000 однотипных записей, замапленных в java-объхекты. Как вы будете это делать? Вызывать для каждого объекта Update в БД? Вы кучу времени потратите на передачу команд в базу. Проще сформировать batch и отправить его. А это, как раз, то самое "процедурное".

    Потому что вы опять какую-то чушь несусветную несёте.

    Я нихрена не понял, что вы написали. Какой-то сферический сервер в вакууме. Где ТЗ? Как говорится, без ТЗ - результат ХЗ.
     
  15. E][prise

    E][prise New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2017
    Сообщения:
    15
    Короче тема в какой-то непонятный холивар скатилась.
     
  16. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    SadKo, А чего непонятного, ТЗ прозрачно и ясно.
    Я хочу увидеть ту часть кода твоего сервака(и предоставлю свой тоже) который просто принимает соединения. Больше мне не нужно. Что тут неясного?
    По второму, я хочу увидеть как ты получаешь RecordSet и как ты с этим рекордсет работаешь. Сразу станет ясно какой ты программист(кстати не исключено даже лучше чем я, это мы посмотрим.) Слова ничего не значат, а код сразу покажет кто есть кто. Что из этого ТЗ тебе не ясно? Или ты хотел смешать сначала меня с грязью а потом эдак слить по-тихому? Спрашивай, что не понятно из ТЗ я растолкую. Что тебе не ясно?
     
  17. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    Дополнение такое, создаем сериализумый класс, который и пересылаем между клиентом и сервером.
    Скажем соединились тысячи пользователей и послали по тысяче(или меньше) этих сериализовываемых обхектов. Сервер их подхватывает и скажем отображает проперти String name; которое находится в этом объекте. Либо просто сервер удостоверяется что получил объект и дропает его, выводя в консоли что он сделал. Что касается второго задания, тут либо мы используем базу данных файловую типа Sqlight, это удобно, так как эта база в одном файле, либо если не нравится делаем заглушку как будто у базы данных мы получили инфу в RecordSet'e.
     
  18. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Сервер, который пишется только ради того, чтобы принимать соединения, - это не сервер, это какое-то сферическое непонятно что в вакууме. Для того, чтобы принять соединение, достаточно всего лишь сделать accept() на сокете. Вы хотите увидеть accept() на сокете от меня или решение какой-то конкретной задачи?

    Какая задача ставится для того, чтобы работать с RecordSet? При одних условиях принцип работы один, при других - радикально другой. Неясен контекст, задачи, а поэтому решение неясно. Если вы этого не можете понять, то увы и ах.

    И вообще, я подумал вот что. Почему я должен играть только по вашим правилам? Тогда уж баш на баш. Я вам тоже кидаю две задачи с олимпиады для девятиклассников, а потом сравниваем решение ваше и моё. Ну и прогоняем стресс-тест на производительность.
     
  19. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.331
    Он же типичный шаблонокодер. Получил в руки золотой молоток и теперь все ему похоже на гвоздь.
     
    Indy_ нравится это.
  20. neutronion_old_school

    neutronion_old_school Попугай Сильвера

    Публикаций:
    0
    Регистрация:
    23 июл 2017
    Сообщения:
    411
    SadKo, Если бы речь шла об олимпиадных задачах, то мы были в другом месте. Нет я не согласен. Ты заявил, что знаешь больше моего об архитектури посему lets put your money where you mouth is.
    Когда будем спорить об олимпиадных задачах, тогда и поглядим.
    Так твой сервер, будет просто accept()?
    У тебя и меня уже так я понимаю наработки, по recordset как ты обрабатываешь, и recordset как я обрабатываю, вот и давай поделимся кодом. А олимпиадные задачи это на другом сайте обсудим.
    Либо придется считать, что ты включил обратку. Чего ты боишься показать часть своего кода честному народу? Ну ничего страшного возможно я чему-то научусь а возможно я покажу тебе кое-что из техники как принимать(как вариант) коннекты тысячи клиентов. Мы только выиграем от этого. Ежели ты не согласен показать данный код, то прошу тебя запомнить этот момент и больше в разговорах со мноей не поднимать вопрос о том понимаю я архитектуру или нет. Договорились?