Перейти к содержанию
Посмотреть в приложении

A better way to browse. Learn more.

Форум Академгородка, Новосибирск

A full-screen app on your home screen with push notifications, badges and more.

Чтобы установить это приложение на iOS и iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
Чтобы установить это приложение на Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

consdush

Пользователь
  • Зарегистрирован

  • Посещение

Весь контент consdush

  1. Кстати, администратор на просьбу разъяснить нестыковки чека вызвала милицию. К счастью меня никуда не забрали. Так что будьте осторожны!
  2. Потому что рано или поздно Вас обманут на деньги. Я с приятелем постоянно играю в бильярд. После некоторого количества потраченных денег (тысят 5- 10) нам официально дали скидку. Это очень здорово, но проблема в том что администрация обманывает посетителей. Например скидка одна, а считается половина. Естественно что это видно ТОЛЬКО ПО ЧЕКУ. Я трижды пытался уладить конфликты по этому поводу. Дважды удалось, а третий раз вышел прокол. - В очередной раз после просьбы подробно объяснить состав чека мне было объявлено что скидка для меня закончилась. Там было написано бильярд 1500 руб, скидка 30% - 300 руб. 300 руб это 20, а не 30 процентов от суммы. Как всегда, обманули. Это не считая мелких глюков вроде прокат кия 6 часов, а бильярд - 5.9. До Свидания, Ирония! :) В бильярд в Бердске луше играть: Триумф, КГБ, ЛСД (на нижнем этаже, кстати классное освещение и пока еще более менее вменяемые кии в отличии от Иронии), даже в Надежде возле ресторана Пекин - нигде из этих мест меня ни разу не обманули. Удачи!
  3. Tonal В предметной логике ничего кроме Execute от команды и не нужно. Не понял. Допустим, команды находятся в библиотеке UI, а в предметной логике есть объект Item у него есть метод Delete() и свойство CanDelete. Я так делал не раз кстати ибо в CanDelete прекрасно помещается та самая логика. В этом случае Execute() команды будет вызывать Item.Delete, а IsEnabled - CanDelete. Это правда прямолинейный случай когда имеются аналогии одновременно в UI библиотеке и предметной логике. В самом отвлеченном случае команда UI для предметной логики ничего не значит, ее просто не существует для логики. В команду вызовы предметной логики вставляет UI слой приложения, использующий библиотеку UI с командами. Посредством таких промежуточных слоев предметная логика используется с самой разнообразной архитектурой UI библиотек, в тч с командами и без них. То есть, еще раз, команды которые определены в UI библиотеке - это элементы UI библиотеки, посредством которых ваш UI слой приложения конфигурирует эту UI библиотеку. К предметной логике команда UI отношения не имеет, но могут быть аналогии как в примере выше. Проблема Необходимо послать объекту запрос, не зная о том, выполнение какой операции запрошено и кто будет получателем. Ну я так думаю тут акцент не на посылке, а на анонимности операции. См случай маршалинга, где стоит проблема посылки :) И все таки как насчет примеров? К замыканиям тема не относится, опять оффтопик. Еще пример (воображаемый) когда у команды естественно добавить дополнительный член. Например обработчик задач запускает на исполнение команды согласно приоритетам. Тогда в ITask логично добавить Priority. Ну у меня фантазия небогатая.. или возможно в ITask команду лучше бы включить как член..
  4. Tonal Не согласен практически со всеми заключениями имеющими отнешение к делу. Шаблон "Команда" - это именно передача действия из одного места системы в другое, и ничего больше. На мой взгляд, команда это объектный вариант функционального колбэка. Колбэк выступает в роли анонимного действия, о котором система использующая колбэк не должна иметь информации. Анонимные действия оттого что система конфигурируется командами, определенными сторонним модулем который эту систему использует. Поэтому делать акцент именно на передаче я бы не стал. Например передача действия маршалингом использует совсем другие паттерны. У команды есть отличие от колбэка, для нее справедливо то что говорится в функциональном контексте, за это отвечает член execute() + добавляется объектное поведение. Команда это не просто колбэк, а класс связанный с другими классами модуля где команда определена. Вместе с другими классами сообща она решает задачи родного модуля и ей возможно совершенно не обойтись без других членов. Даже может 2м колбэкам появиться в команде и тп, почему нет, если логика модуля задана именно так и никак иначе. Ведь команда является составной частью именно родного модуля, а не подстраивается под логику других модулей. Кнопки, пункты меню, клавиши быстрого доступа - они все только инициируют посылку команды туда, где она должна быть выполнена. Удобно обобщить их общие элементы в одном месте, но это будет не "команда", а что-то другое Почему что то другое? IsEnabled, Name и тп неужели не имеют отношения к колбэку execute()? Чем плохо иметь в команде член Имя с точки зрения ООД? Если с тз модуля колбэк и другие свойства должны относиться к одной сущности, помещаем их в класс команды и используем. .. TAction ... У них есть текст, текст подсказки, иконка, состояние разрешенности (isEnabled), видимость (isVisible) и ещё много полезных атрибутов и методов. Эти классы очень удобны на уровне пользовательского интерфейса, но на уровне предметной логики существенно только то, что они могут создать и отправить команду. TAction, если я правильно понимаю, и есть команда. Насчет предметной логики, почему IsEnabled несущественен на "уровне предметной логики"? Имплементация IsEnabled прекрасно может обращаться к предметной логике за вычислением своего значения. Сама предметная логика скорее всего и не знает про команды UI слоев, и вообще как UI организован. Для интереса просто приведите 2 примера системы где ICommand имеет единственный член Execute.
  5. AmbassadorKosh Спасибо конечно за ссылку. Немного напоминает Нашу Рашу. Tonal Если есть еще члены, то это уже не чистая команда, а команда + что-то ещё. Не чистая, а примитивная, она же функция обратного вызова, он же делегат. Не буду спорить что каркас возможно построить на делегатах, но все таки если каркас спроектирован с IsEnabled вместе с Execute и Undo, то это уже будет действительно ICommand, а не простой колбэк. Суть ICommand в колбэке, но так как ICommand все таки находится в сфере оод, а не функционального программирования, то иметь члены помимо колбэка ему полагается по происхождению. В этом его преимущество, это не просто колбэк, а объект команды. В конкретных реализациях он обрастает частными членами, необходимыми в контексте модуля где ICommand объявлен. Берем самый простой случай функции которая не принимает параметров и не возвращает ничего. Начинаем усложнять - добаляем логику модуля где функция могла бы использоваться. При небольшом усложнении появятся аргументы и возвращаемое значение. Если еще усложнить и сделать шаг в сторону ООД, то колбэк станет объектом и у него появятся члены помимо Excecute(). Это ж естественно. Куда и зачем нужно будет передавать действие, которое нельзя выполнять (IsDisabled)? Передавать действие надо туда где ICommand используется. UI кнопка, элемент меню, клавиша быстрого доступа, IsEnabled - кнопка может быть задизэйблена, меню тоже, клавиша игнорируется и тп. вернуть из функции для действия функцию для отмены. Как насчет варианта требований к ICommand что с его помощью нужно получать сведения о том, может ли он делать Undo после Excecute. Добавить член CanUndo или может вернуть из Execute структурку с членом CanUndo? Вариант очевиден.
  6. fiend отвечать в таком духе не очень тактично. Изначально я написал, что сорри, оффтопик, в ответ мне - да ты что, это же оффтопик!! ну и как я должен отвечать? никак не буду. см певую строчку. fiend Кошмарный код. С точки зрения оформления возможно неплохо, с тз смешения всего и вся .. мне просто непонятно, да и зачем эти Action здесь?? Чтобы с помощью лямбд и замыканий превратить простое в сложное? :) В общем то на прошлой странице были голоса про то что зачем замыкания нужны... Tonal И все таки, что если в интерфейсе ICommand есть еще члены? Например IsEnabled, Undo(), без разницы. Один член Excecute() это пардон вырожденная форма паттерна команды. Получается что функциональный пример аналога ICommand годится только для вырожденного случая ICommand? Пытаюсь понять где бы было удобно применять замыкания для случав кроме локальных лямбд и анонимных функций.
  7. Доллар единственная универсальная мировая валюта по соглашениям вроде бы. Если кто то в России хочет купить мексиканскую текилу, то покупка идет в конечном итоге в долларах. Зачем Мексике рубли? Вот ФРС и "напечатало" долларов столько сколько потребляет мировая экономика. Когда то доллар был обеспечен золотом, но от этого обеспечения давно официально отказались. ПС: нефть и газ продаем Европе и Азии, но получаем все равно доллары.
  8. fiend В смысле - и? К замыканиям и лямбдам это не имеет отношения, я же сказал. Здесь интересно то что всякие связывания light, command, swtch - это вовсе не код, а конфигурация. Tonal Реализация команд обычно тривиальна и совершенно шаблонна - т.е. это замыкания в чистом виде реализованные вручную. Не очень понял. Кстати, что то плохо себе представляю, возможно ли с помощью замыканий (делегатом) сымитировать icommand с членами помимо execute() ... возможно конечно передавать весь набор делегатов какие есть в icommand, но стоит ли. Теперь дошло. Назвается это не замыканиями, это inversion of control :) И вообще то Light у команды не замыкание.
  9. Не совсем по теме замыканий и лямбд, но все же. Вслед имплементациям паттернов команда. Классика жанра на java или c# со Spring. Модуль логики: interface ILight {..} class UltravioletLight : ILight {имплементация} модуль UI: каркас: interface ICommand {void execute();} interface IController {Dictionary<string, ICommand> CommandTable {get;set;}} class Controller : IController {имплементация} включение обращений к логике в каркас UI: class LightOnCommand : ICommand { public ILight Light {set{..}} .. имплементация ICommand использующая Light} class LightOfCommand : ICommand { public ILight Light {set{..}} .. имплементация ICommand ..} конфигурация конейнера (в xml файле): <object id="MyLight" class="UltravioletLight"/> <object id="MyLightOn" class="LightOnCommand "> <property name="Light" ref=MyLight /> </object> <object id="MyLightOff" class="LightOfCommand "> <property name="Light" ref=MyLight /> </object> <object id="MyController" class="Controller"> <property name="CommandTable"> <dictionary> <add key="ON" ref=MyLightOn/> <add key="OFF" ref=MyLightOff/> </dictionary> </property> </object> майн: main(argv) { ((IController)Ioc["Controller"]).Table[argv[0]].execute(); }
  10. Tonal Хотя наверное Linq в применениии к скажем List<> это действительно просто списковое дополнение. Но удобное :)
  11. Tonal Что то вроде списковых дополнений в с# было до linq, например в List<> классе. Тогда появились анонимные делегататы и замыкания. List<MyClass> list = GetSomeList(); string maxFullName = ""; list .FindAll(delegate bool (MyClass o) { return o.Address.IndexOf("Morskoy") >= 0; }) .ConvertAll(delegate string (MyClass o) { return o.FirstName + " " + o.LastName; }). ForEach(delegate (string fullName) { if (fullName > maxFullName) maxFullName = fullName; }); linq немного более продвинутая технология. Language integrated query, это ведь просто запрос, найти что то по таким то условиям, преобразовать в то то. Select, from, where. Имеется аналогия с sql по ключевым словам, но ведь sql это наверное structured query language, а смысл этой фразы не подразумевает однозначно реляционного вида данных. MS реализовала linq to sql и linq to xml, структура которого есть дерево. Не ms реализации linq to ... есть почти к чему угодно наверное, (linq to google подойдет?) разве что качество их под вопросом. linq to sql для FireBird кажется есть, но не MS. Кроме того в linq части запроса это объекты которые можно использовать, передавать куда то вовне и тп. Лямбды наверное из за linq и появились в c# Вместе с Expressions, анонимными классами, методами-расширениями..
  12. Вот и я про то же. То ли дело MyClassObject[] list = GetSomeList(); List<string> names = ( select o.FirstName + " " + o.LastName from list where o.Address.IndexOf("Morskoy") >= 0 ).ToList(); Пардон если не компилируется.. Здесь есть неявные лямбды, и в сочетании с другими расширениями языка код читается отлично. (Это наверное камешек в огород с++. Насколько я понимаю, с# компилятор подставляет дополнительные конструкции в виде объектов и функций для обеспечения корректной работы замыканий и лябд во время компилирования, это скрыто от программиста, и по этому поводу не надо беспокоиться)
  13. Пример примочки из другого языка, С#. Лямбды хороши в linq, например код с# (select o.id from objects where o => o.name.EndsWith("nov")).ToList() здесь o => o.name.EndsWith() лямбда, переводится linq в запрос sql вида select id from objects_table where o.name like "%nov". Приятно..
  14. rayven Вы много врачей владеющих латынью знаете если не секрет? :) А как это, программировать на 1С, тоже имеется опыт?
  15. Не надо так делать программы, очень нехороший стиль. Если не ошибаюсь, какой то стандарт с++ указывал что порядок вычисления операндов не определен.
  16. Не уверен точно, но возможно стоит ссылаться на что то вроде PostbackUrl вместо action. Для простоты проверку MAC можно отключить, что то вроде EnableViewstateMAC в директиве page.
  17. Да-да. Особенно студенты физфака способны внести вклад в информационные технологии :) После окончания 3 года изучают с# и становятся на один уровень с выпускниками фит, просто замечательно.
  18. Спасибо за ответы. Tonal выгода заказчика в том, что они могут сменить поставщика, в случае надобности (исходники все есть). Обычно у заказчиков софта есть правообладание на исходники, если ничего не путаю, зачем ему дополнительные сложности с лицензией? Не знаю тонкостей, но если допустим в приложение сделанное по свободной лицензии включается коммерческий компонент, то разве это не будет нарушением лицензии? Коммерческие компоненты довольно распространенная вещь. Dassie Что бы это значило что Spring продали. Я пользовался, жалко.
  19. Матаппарат используется - на экономе, ггф, физфаке, фене, фите и конечно мехмате (пардон если забыл какой-то факультет). Наверное информационные технологии и разработка компиляторов все же разные, малопересекающиеся термины :))))))))))
  20. Если бы кто дал ссылку на ликбез, чем коммерчески выгодны свободные проекты, был бы благодарен. !
  21. Да, мне это тоже интересно, отчего ж факультеты непрофильные? :)
  22. Не знаю насчет штатов, говорят в Мск программист 1С может иметь 1500 в час - 50$, неплохо и для штатов. В штаты надо было ехать в 90-е, это определенно. Сейчас вопрос сложный. У нас пока востребованы бухгалтерские, складские и тп приложения, но возможно придет другое время. После того как доллар перестанет быть мировой валютой, к чему имеется тенденция, в США делать станет нечего. Ученые и как назвали человеческий капитал оттуда довольно быстро уедут.
  23. Если в наличии аномальная зона, то ее должны исследовать ученые ;) Правильно несколько раз заметили, ГА это так или иначе территория РФ со всеми вытекающими. Если руководство Алтая против исследований, то пусть этот вопрос решается на федеральном уровне.
  24. Последние годы дорога после дождя там не кажется чем то оффроадным. 10 лет назад было заметно экстремальнее.

Аккаунт

Навигация

Поиск

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.