Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;) Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет. Pharo 6 Как удалить программно метод из класса что бы избежать ошибок? банальный methodDict removeKey: - приводит к ошибкам в том числе и в GUI менее банальный removeSelectorSilently: - приводит к ошибке т.к. в RPackage>>classDefinedSelectors остаётся селектор уже удалённого метода. -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано. 29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Дмитрий Замоткин
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
ну собственно дошёл ощупью до removeSelector:
-- :) Вроде ошибок не замечаю... пока. Не знаю может есть более штатное решение. ЗЫ: Каких то 2 часа на это... Чего не сделаешь для души :) Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба. В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки. И всё это прекрасным образом не документировано :D четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Заведите блог и начните писать свои решения.
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Всё верно...
-- Но блог я пока не осилю. Потому сюда запостил (ясно, что так или иначе, но что то бы сделал), так как эта тема может когда нибудь нагуглится кем то и это будет хорошо ЗЫ: Кстати теперь способ "Объекты как обёртки методов" ломает GUI, я вчера день потратил на распутывание и плюнул, решил реализовывать прокси как создание методов на лету (ибо просто переопределение doesNotUnderstand: примерно в 6 раз медленнее). Это не так изящно, но присутствие документации по GUI и иже с ним только в головах авторов не оставляют выбора. (Проект "Качели" кадр 6 :) ) четверг, 29 июня 2017 г., 11:50:42 UTC+3 пользователь Vladimir Musulainen написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Прокси конечно через doesNotUnderstand:, создание методов на лету сомнительно. Медленнее - а вы куда-то торопитесь? У вас еще ничего не написано, а вы уже пытаетесь оптимизировать. Зачем вам документация, если есть исходный код? 29 июня 2017 г., 11:47 пользователь Александр <[hidden email]> написал:
Дмитрий Замоткин
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
четверг, 29 июня 2017 г., 13:37:46 UTC+3 пользователь Dmitry Zamotkin написал:
Просто это предельно очевидный шаг (т.к. будет использоваться обильно и часто.., хотя были версии и без этой оптимизации... (кстати, почему Вы решили, что ничего не написано? ;) ) ) четверг, 29 июня 2017 г., 13:37:46 UTC+3 пользователь Dmitry Zamotkin написал:
Согласен. Это очень здорово. Одна из привлекательных черт, что можно посмотреть, изучить, сделать/переделать по своему, под ситуацию и т.п. Но это не отменяет тоски по нормальным мануалам ) -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Genosse
29 июня 2017 г. 11:47 пользователь "Александр" <[hidden email]> написал:
Я работаю над новым браузером Calypso. Могу поддержать ваш кейс. Попробуйте загрузить из каталога. И скажите, где ломается. И пришлите пример кода для обертки методов. (Все основные фичи работают)
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Кстати, если есть объект метода, то для удаления скажите ему removeFromSystem 29 июня 2017 г. 14:06 пользователь "Denis Kudriashov" <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
четверг, 29 июня 2017 г., 15:08:52 UTC+3 пользователь Denis Kudriashov написал:
Спасибо, запомню. 29 июня 2017 г. 14:06 пользователь "Denis Kudriashov" <[hidden email]> написал:
Я уже удалил свою реализацию через обёртки, но быстренько набросал минимум снова (ниже код) Как понимаю проблема из-за обращения к методам метода, а вместо него объект который их не имеет. Начал распутывать цепочку.., но притомился ;) Файл прикрепить нельзя поэтому прямо текстом: ProxyTMP.st
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Denis Kudriashov
Загрузил Calypso.
-- Он не ломается как наутилус, открывает дебагер. Это хорошо! Сподручнее распутывать змеиный клубок четверг, 29 июня 2017 г., 15:06:51 UTC+3 пользователь Denis Kudriashov написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Genosse
--
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Genosse
Кстати красный крест тоже можно дебажить. В хало меню красного морфа есть команда для дебага ошибки. Это конечно не удобно, иногда сложно выбрать нужный морф. И кроме того, дебагер будет не на живом процессе. 29 июня 2017 г. 15:14 пользователь "Александр" <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Genosse
А какой пакет используете для враперов? (AbstractObjectsAsMethod это откуда?) 29 июня 2017 г. 14:51 пользователь "Александр" <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
В стандартной поставке Фаро (по кр. мере 6-ой)
-- Всёго лишь реализует заглушки для 6 методов
ЗЫ: Кстати, о чём я говорю?! Не узнаёте случайно ФИО одного из разработчиков, приложивших к нему руку? :D четверг, 29 июня 2017 г., 18:46:23 UTC+3 пользователь Denis Kudriashov написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
30 июня 2017 г., 6:17 пользователь Александр <[hidden email]> написал:
Забавно :) Скорее всего, я просто перенес unclassifyed метод в другой категорию (cleanup) . -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
3 июля 2017 г., 17:13 пользователь Denis Kudriashov <[hidden email]> написал:
Есть тесты, которые репортят методы. Вероятно, когда-то я их запустил и заметил. -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
кстати, просто мысль в слух.
-- Смежная тема. Класс прокси вроде как логичнее наследовать не от Объекта, а от ПротоОбъекта. Если прокси использовать не как просто заглушку самозаменяющуюся на некий объект, а как и своеобразную обёртку (например хранящую какието переменные, и методы, которыми не хочется захломлять класс Объект), то получается нехорошая штука. Весь пакет методов отвечающих за инспектирование объектов реализованы ниже - в классе Объект, из-за чего при просмотре прохи возникают серьёзные проблемы. Вот просто просится между ProtoObject и Object какой нибудь BaseObject, в который перенести всю кухню инспекции (он будет обладать минимализмом ProtoObject и в тоже время не будет неполноценным). Я пока выхожу из ситуации просто банальным дублированием нужного кода в потомка ПротоОбъекта этакий InspectedProtoObject http://smalltalkhub.com/#!/~AlexanderRemizov/InspectedProtoObject (этих методов вроде достаточно, что бы не крашился инспектор) на котором уже и реализую прокси на объектах и прокси на словарях -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Попробуйте проект Ghost http://dionisiydk.blogspot.fr/
-- Идея была сделать универсальный фреймворк для проксей (проект был создан Mariano Peck). К сожалению актуальной документации нет. Но классы с комментами, и тесты демонстрируют, как создавать специфичные объекты. 4 июля 2017 г., 5:22 пользователь Александр <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Хотя уже свой наваял, но весьма любопытно, посмотрю...
-- Скорее всего там те же проблемы с интроспекцией и со всеми инструментами отладки. Вообще, начало казаться, что не совсем правильно т.с. со стратегической т.з. пошло развитие инструментов интроспекции и отладки. Более 30 методов (!) пришлось продублировать в InspectedProtoObject, что бы перестал отваливаться inspector и т.п. И видимо это кол-во будет расти. Это не совсем нормально. Понятно, что это самое простое - вкарячить очередной метод в Object, но это выглядит не правильным в глобальном плане. Подобных методов должно быть исключительный минимум, а Инспектор должен работать на всех объектах образа едино и не навязчиво. PS. Я отдаю себе отчёт, что сейчас это уже крайне сложно сделать и это очень массивная перестройка... Это просто мысль высказанная в слух ) вторник, 4 июля 2017 г., 22:12:49 UTC+3 пользователь Denis Kudriashov написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Free forum by Nabble | Edit this page |