
Сфера IT (специфика, языки програм-я, прочее)
#16
Отправлено 20 октября 2018 - 21:30
Модель:
TBlotterModel_Country = Class (TModelBase<TCountryListItem>)
Strict Private
FIsShowAllItem: BooleanNull;
Procedure SetterIsShowAll;
Public
Constructor Create; override;
Property IsShowAllItem: BooleanNull read FIsShowAllItem;
End;
Constructor TBlotterModel_Country.Create;
Begin
Inherited;
TwoWay(FIsShowAllItem, SetterIsShowAllItem);
EditorModel(‘TModelView_Country’, procedure (const runForn: IClassRunForm) begin
RubForm.MessageBroker.CallContext.InputParams[‘PAR_HASEDITABLE’] := MessageBroker.CallContext[‘PAR_HASEDITABLE’].value;
End;
BindSet(procedure (const LocalSet: ILocalSet)
Var dbcontext: tdbcontext<TCountryListItem>;
Entities: ISet<TcountyListIem>;
begin
Dbcontext := Tbcontext<TCountryListItem>.Create;
Entities := dbcontext.query .tolist();
If not (fisshowdeleted.hasvalue and fisshowdeleted.value) then
Entities
.Where(function (const x: TCountylistitem): Boolean begin Result := x.isdeleted.hasvalue and not x.isdeleted end);
Entities.AppendRecords(LocalSet);
Dbcontext.free
End);
HasSearch := true;
End;
Procedure SetterIsShowdeleted;
Begin
DoRefresh;
End
#17
Отправлено 20 октября 2018 - 21:47
TblotterModelView_Country = class (TBlotterModelViewBase<TCountryListItem, TBlotterModel_Country>)
private
Procedure ViewConstructor; Override;
End;
Procedure TBlotterModelView_Country.ViewConstructor;
Begin
Inherited;
AddRow(Relative, 100);
AddColumn (Relative, 100);
_layout.Grid(0,0).Build(procedure (const m: IGrid<TCountryListItem>) begin
m.AsLong(m.x.key).tech().fixed();
m.AsText(m.x.charcode, ‘симв. код’);
m.AsText(m.x.numcode, ‘цифр. код,);
m.AsText(m.x.title, ‘наименование,);
m.AsBool(m.isdeleted, ,удалён);
End);
_bar.add.buttondown.caption(показать удаленные).tomodel(_model.isshowdeleted);
End;
Короче скорость разработки крупных задач по сравнению с дельфи формошлепами повысилась в 15 раз и все работает как надо - слова моего начальника. Период когда формы писались по старинке - покидал Vcl компоненты и насовал 100 событий в виде макоронного кода мы вместе называем ,how fill fill fields :))) это у нас мем :)
Сообщение отредактировал Mixrud: 20 октября 2018 - 21:51
#18
Отправлено 20 октября 2018 - 22:24
Mixrud сказал(а) 20 Окт 2018 - 18:47:
End;
Короче скорость разработки крупных задач по сравнению с дельфи формошлепами повысилась в 15 раз и все работает как надо - слова моего начальника. Период когда формы писались по старинке - покидал Vcl компоненты и насовал 100 событий в виде макоронного кода мы вместе называем ,how fill fill fields :))) это у нас мем :)
Спасибо! Я не все понял но общую идею уловил.
Но не будем нервировать форумчан, на неделе отпишу в личку.
#19
Отправлено 21 октября 2018 - 00:17
Вкупе со средой которая любит при нажатии на Refactor или другое меню сообщить что у неё Access Violation.
А так писать можно. Ее возможностей ООП хватает, хотя карьяжи бы и анонимные классы. И ещё чуть более широкий RTTI, ну чтобы nameof от переменной взять.
Но это уже мелочи жизни.
У меня классы движка под два метра кода, вроде вылизывал но есть пара мест где circular unit не разрулил и оочень плохо реализовал. Но опять это мелочи жизни.
Сообщение отредактировал Mixrud: 21 октября 2018 - 00:25
#20
Отправлено 22 октября 2018 - 16:00
Одмены есть? :) Кто что юзает на серваках, какую ОСь?
#21
Отправлено 22 октября 2018 - 16:38
Mixrud сказал(а) 20 Окт 2018 - 18:47:
Короче скорость разработки крупных задач по сравнению с дельфи формошлепами повысилась в 15 раз и все работает как надо - слова моего начальника. Период когда формы писались по старинке - покидал Vcl компоненты и насовал 100 событий в виде макоронного кода мы вместе называем ,how fill fill fields :))) это у нас мем :)
Ну если я тебя понял ты просто реализовал на Delphi двустороннее связывание между моделью и вьюхой - если изменить данные на форме то модель обновляется сама - и наоборот - при изменении модели она сразу же перерисовывается на форме. Это, конечно, здорово - но ведь это реализовано уже давно в куче фреймворков на других языках. Так как мне ближе веб я это использовал в Ангуляре, но для десктопных жава приложений такое реализовано во фреймворке JGoodies (это я вчера нагуглил, сам не пользовался).
То есть - на дельфях вам приходится заниматься не бизнес-логикой своего приложения а написанием фреймворков, в то время как в более модных языках готовые фреймворки уже есть - с тестами и документацией. По-моему последнее существенно облегчает разработку.
#22
Отправлено 22 октября 2018 - 17:06
Я пишу со стажерами движок и бизнес модели.
Наш движок это не только MVVM и MVC. Почему не C# ? Я бы с удовольствием писал бы на C#, но к сожалению кроме Delphi XE 10 ничего не будет. Так потихонечку занимаемся казначейством группы.
Почему не будет- безопасность, компоненты безопасности написаны на Delphi. Я предложил обернуть эти компоненты как DLL и работать с ними через C#, но предложением никто не заинтересовался.
Сообщение отредактировал Mixrud: 22 октября 2018 - 17:15
#23
Отправлено 22 октября 2018 - 17:39
Хм, ну странно начальство себя ведет, но да бывало и хуже.
А ты сам не боишься что, добустим, лет через пять надо будет менять работу - а у тебя в резюме не модные котлин да хаскель а дельфи, спрос на который не велик?
#24
Отправлено 22 октября 2018 - 18:27
К-1980 сказал(а) 22 Окт 2018 - 14:39:
С#, Delphi, T SQL на самом деле.Хм, ну странно начальство себя ведет, но да бывало и хуже.
А ты сам не боишься что, добустим, лет через пять надо будет менять работу - а у тебя в резюме не модные котлин да хаскель а дельфи, спрос на который не велик?
Я не сторонник бежать за трендами, пытаться сменить направления деятельности. На второй работе 6 лет, на третьей 11 лет. На каждой из них я проводил системную работу. Которую на текущей работе не закончил. Я могу быть им ещё полезен.
У меня прекрасное начальство. Я сменил работу потому что познакомился с этими ребятами. Надеюсь мы вместе надолго.
Сообщение отредактировал Mixrud: 22 октября 2018 - 18:30
#25
Отправлено 22 октября 2018 - 20:43
Лучше бы написали как войти в айти, так как ваши проблемы это вообще пшик. Самое сложное это трейни-джуниор. Конкретно интересует веб ( js, react). всем нужны с опытом Коммерческим, а где его взять если см. выше.
Врать чтоли в резюме?
#26
Отправлено 22 октября 2018 - 21:00
интересно, а есть тут nodejs разрабы? все пишут что адекватных курсов по этой теме в России нет, только зарубежные материалы.
#27
Отправлено 22 октября 2018 - 21:30
Никакие курсы дать опыт не смогут.
Сообщение отредактировал Mixrud: 22 октября 2018 - 21:32
#28
Отправлено 22 октября 2018 - 21:50
Начинать изучение темы про ООП следует с книги Эриха Гамы и товарищей. Погуглите Банда четырёх. Примеры на smalltalk, но тут не важен язык - важна суть.
Сообщение отредактировал Mixrud: 22 октября 2018 - 21:51
#29
Отправлено 22 октября 2018 - 22:49
Mixrud сказал(а) 22 Окт 2018 - 18:50:
Если мы про идеологию построения системы то JS это ООП.
Начинать изучение темы про ООП следует с книги Эриха Гамы и товарищей. Погуглите Банда четырёх. Примеры на smalltalk, но тут не важен язык - важна суть.
Если это ответ мне - то я уже в теме и базу я знаю, учу щас реакт и делаю тестовое, которое не успел сделать для собеса. А вопрос в силе, так как пока никто не зовёт на собес, треть пишет что из-за того что нет коммерческого опыта, остальные так же думаю, просто не говорят этот фидбек.
#30
Отправлено 22 октября 2018 - 23:37
Вот, приступ вечерней графомании меня одалел.
Войти в айти.
Общие советы и литература.
Для начала неплохо бы в общих чертах определиться что именно вы хотите программировать - делать веб-приложения с красивым интерфейсом, писать микросервисы, распределенные приложения, обрабатывать научные экспериментальные данные, строить некие модели для инженерных расчетов. Выбор этот не окончательный и, скорее всего, в процессе работы направления будут меняться - но с чего-то же надо начинать.
На выбор может повлиять ваша нынешняя работа (где требуется что-то конкретное), или уже имеющиеся навыки или пример знакомого. Выбранное направление определит язык(и) которые следует учить в первую очередь.
После этого стоит определиться со стеком технологий которые нужны в данной отрасли. Стек - это не просто набор разношерстных технологий а такой набор с помощью которого можно делать что-то законченное. Человек который знает несколько языков программирования с практической точки зрения менее ценен чем человек который знает язык программирования плюс фреймворк (каркас приложения из которого легко и быстро собрать готовый сервис). Может и неплохо разбираться в нескольких базах данных - но с ними вы не построите веб-приложение. А зная - пусть и не в совершенстве - стек LAMP (Linux-Apache-Mysql-PHP) или MEAN (MongoDB-Express-Angular-NodeJS) вы можете писать полноценные приложения.
Мой основной стек, например Java-Spring (IoC,Boot, Rest, Security, Batch)-Hibernate-Postgres-Camel. Это стек для написания распределенного бэкенда.
Как определиться со стеком? Идем на сайты типа хед-хантера, вбиваем выбранный язык/направление и смотрим какие еще технологии требуют от программиста в этой области. Проглядываем пару десятков вакансий, замечаем наиболее часто встречающиеся технологии и выписываем - потом читаем в википедии и на хабрахабе о том что это такое и для чего они нужны - как связаны между собою. Если две технологии делают одно и то же - выбираем одну. Тут рекомендую книгу Чеда Фаулера “Программист-фанатик” - она как раз про выбор технологий которые построят вашу карьеру. Фаулер сравнивает выбор технологий с инвестициями - можно выбрать редкие пока технологии - и, если вы угадали с ними и освоили к тому моменту как технология набрала популярность - вы оказываетесь на коне. Можно выбрать технологии которые сейчас очень популярны - тут высокая конкуренция которая снижает зарплаты - но работа гарантированно будет. А можно даже пастись на умирающих технологиях - ведь всегда есть куча старого кода который надо поддерживать или переписывать - а молодежь не хочет учить древность, поэтому за программиста-знатока этой технологии - готовы платить. Правда, на мой взгляд Фаулер немного сгущает краски - даже в сверхпопулярных технологиях хороших профи мало и не надо бояться останавливаться на этих технологиях из-за конкуренции.
Разумеется, от новичка не требуется знание стека от и до - но написать что-то работающее он должен уметь..
Так, стек выбрали - но это еще не все. Нужно немного теории и кое-какие инструменты разработчика.
С теорией дело обстоит так. Если вы не идете заниматься научными расчетами высшая математика вам наверно не понадобиться, но вот основные алгоритмы и структуры данных понимать надо. Да, надо понимать - куда быстрее вставляются данные - в массив или в связанный список. Почему поиск в хэш-таблице быстрее поиска в массиве - и когда это не так. Знать это надо по двум причинам - во-первых такие вопросы очень любят спрашивать на собеседованиях. Ну вот так сложилось. Во-вторых - вам вряд ли придется самому реализовывать структуры данных и писать сортировку слиянием (если только на собеседовании) - но уметь выбирать оптимальные структуры из имеющихся в языке - бывает полезно. Неправильный выбор может очень негативно сказаться на производительности приложения.
Тут однозначно рекомендую книгу Л.Макдауэлл 'Cracking the code interview' (“Карьера программиста” в русском переводе) - это просто реферат того что надо знать по алгоритмам и структурам данных. Не поленитесь прорешать почти все задачи из книги - и в этой части собеседований вы сможете себя чувствовать уверенно.
Вторая часть теории - это ООП, объектно-ориентированное программирование - та черепаха на которой стоят почти все современные языки. На черепахе стоят три кита ООП - такие понятия как наследование, полиморфизм и инкапсуляция. На первый взгляд там ничего сложного - только из этих понятий вырастает две дюжины приемов (называемых также шаблонами или паттернами) которые применяются в реальных задачах. Вот их - не все, но основные - тоже надо бы знать. Изучать их лучше параллельно с языком программирования. Тут культовая книга Э.Гамма сотоварищи, часто называемая GoF (Банда Четырех). Но я бы не рекомендовал с нее начинать - сложно. Прочтите “Head First Patterns” для начала - а за GoF возьметесь когда поймете что чего-то не хватает.
Теперь инструменты. Вот единственная вещь которая вам наверняка потребуется независимо от выбранного языка - это Git - система контроля версий.
Git хранит всю историю изменений ваших файлов - в любой момент можно вернуться в прошлое сохраненное состояние, сравнить с нынешней версией, “отпачковать” и “влить” версию и т.д. и т.п. Незаменим гит при командной работе над проектом. Каждый проект хранится в виде репозитария - на вашем компе или удаленно (их можно синхронизовать между собой). Одно из крупнейших хранилищ репозитариев - на сайте гитхаб. Там можно хранить свои проекты (с открытым исходным кодом - бесплатно) и просмаривать чужие. Ссылка на свой код на гитхабе - хорошая прибавка к резюме. А чужие проекты - отличная возможность проявить себя. Как минимум можно в них разобраться. Как максимум - в больших проектах есть issues - ошибки, нерешенные задачи - клонируйте проект, разбирайте задачу и отправляйте в репозитарий мерж реквест (запрос на вливание кода в проект). Это приветствуется и одобряется. Даже если ваш код отклонят - как правило объяснят что вы сделали не так - можно исправить и доделать. Наличие контрибутов в опенсорс-проекты - это и есть опыт работы который часто требуют на собеседовании.
Еще из инструментов неплохо бы освоить систему сборки проектов для вашего языка - как правило проект состоит из большого числа модулей и превращение его в рабочую программу может быть рутинной задачей - надо “подтащить” библиоткеи, скопировать настроечные файлы, скомпилировать, прогнать тесты, развернуть приложение…
Этот процесс надо автоматизировать используя систему сборки, и систетема сборки вам понадобится наверняка с первых дней работы. Узнайте какая система сборки обычно используется в вашем стеке и освойте ее.
Ну и последний по списку но не по важности инструмент - это инструмент тестирования вашего кода. Параллельно с написанием программ обычно пишутся тесты - минипрограмки которые запускают ваш код и проверяют что он работает как надо. Вот инструменты тестирования ваши тесты запускают и отображают результат. А надо это для того чтобы когда вы решите переписать ваш код не получилось так что изменение в одном куске привело к ошибке в другом которую вы не заметили: написали, запустили тесты - тесты прошли - можно двигаться дальше.
Вот тут “кандидатский минимум” джуниора, пожалуй, можно закончить. На самом деле ничего страшного - все это осваивается за год напряженной подготовки.
Количество пользователей, читающих эту тему: 1
0