Удаление метода без ошибок

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
23 messages Options
12
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Удаление метода без ошибок

Genosse
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Dmitry Zamotkin
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
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.



--
Дмитрий Замоткин

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse
ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="tvng6YQkBAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">gen...@...> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
Pharo 6
Как удалить программно метод из класса что бы избежать ошибок?

банальный methodDict removeKey:  - приводит к ошибкам в том числе и в GUI
менее банальный removeSelectorSilently: - приводит к ошибке т.к. в RPackage>>classDefinedSelectors остаётся селектор уже удалённого метода.

--
--
<a href="http://groups.google.ru/group/sugr" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;" onclick="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;">http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес <a href="javascript:" target="_blank" gdf-obfuscated-mailto="tvng6YQkBAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">sugr+uns...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.



--
Дмитрий Замоткин

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

русский язык (Russian) mailing list
Заведите блог и начните писать свои решения. 
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.

On 29 Jun 2017, at 11:13, Александр <[hidden email]> wrote:

ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="tvng6YQkBAAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;" class="">gen...@...> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
Pharo 6
Как удалить программно метод из класса что бы избежать ошибок?

банальный methodDict removeKey:  - приводит к ошибкам в том числе и в GUI
менее банальный removeSelectorSilently: - приводит к ошибке т.к. в RPackage>>classDefinedSelectors остаётся селектор уже удалённого метода.

--
--
<a href="http://groups.google.ru/group/sugr" target="_blank" rel="nofollow" onmousedown="this.href='http://groups.google.ru/group/sugr';return true;" onclick="this.href='http://groups.google.ru/group/sugr';return true;" class="">http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес <a href="javascript:" target="_blank" gdf-obfuscated-mailto="tvng6YQkBAAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;" class="">sugr+uns...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href='https://groups.google.com/d/optout';return true;" onclick="this.href='https://groups.google.com/d/optout';return true;" class="">https://groups.google.com/d/optout.



--
Дмитрий Замоткин

--
--
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse
Всё верно...
Но блог я пока не осилю.
Потому сюда запостил (ясно, что так или иначе, но что то бы сделал), так как эта тема может когда нибудь нагуглится кем то и это будет хорошо

ЗЫ:
Кстати теперь способ "Объекты как обёртки методов" ломает GUI, я вчера день потратил на распутывание и плюнул, решил реализовывать прокси как создание методов на лету (ибо просто переопределение doesNotUnderstand: примерно в 6 раз медленнее). Это не так изящно, но присутствие документации по GUI и иже с ним только в головах авторов не оставляют выбора. (Проект "Качели" кадр 6 :) )




четверг, 29 июня 2017 г., 11:50:42 UTC+3 пользователь Vladimir Musulainen написал:
Заведите блог и начните писать свои решения. 
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.

On 29 Jun 2017, at 11:13, Александр <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="JgmKrEAnBAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">gen...@...> wrote:

ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
Pharo 6
Как удалить программно метод из класса что бы избежать ошибок?

банальный methodDict removeKey:  - приводит к ошибкам в том числе и в GUI
менее банальный removeSelectorSilently: - приводит к ошибке т.к. в RPackage>>classDefinedSelectors остаётся селектор уже удалённого метода.

--
--
<a href="http://groups.google.ru/group/sugr" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;" onclick="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;">http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.



--
Дмитрий Замоткин

--
--
<a href="http://groups.google.ru/group/sugr" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;" onclick="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;">http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес <a href="javascript:" target="_blank" gdf-obfuscated-mailto="JgmKrEAnBAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">sugr+uns...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Dmitry Zamotkin
Прокси конечно через doesNotUnderstand:, создание методов на лету сомнительно. Медленнее - а вы куда-то торопитесь? У вас еще ничего не написано, а вы уже пытаетесь оптимизировать.

Зачем вам документация, если есть исходный код? 

29 июня 2017 г., 11:47 пользователь Александр <[hidden email]> написал:
Всё верно...
Но блог я пока не осилю.
Потому сюда запостил (ясно, что так или иначе, но что то бы сделал), так как эта тема может когда нибудь нагуглится кем то и это будет хорошо

ЗЫ:
Кстати теперь способ "Объекты как обёртки методов" ломает GUI, я вчера день потратил на распутывание и плюнул, решил реализовывать прокси как создание методов на лету (ибо просто переопределение doesNotUnderstand: примерно в 6 раз медленнее). Это не так изящно, но присутствие документации по GUI и иже с ним только в головах авторов не оставляют выбора. (Проект "Качели" кадр 6 :) )




четверг, 29 июня 2017 г., 11:50:42 UTC+3 пользователь Vladimir Musulainen написал:
Заведите блог и начните писать свои решения. 
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.

On 29 Jun 2017, at 11:13, Александр <[hidden email]> wrote:

ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
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.



--
Дмитрий Замоткин

--
--
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.



--
Дмитрий Замоткин

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse


четверг, 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Denis Kudriashov
In reply to this post by Genosse


29 июня 2017 г. 11:47 пользователь "Александр" <[hidden email]> написал:
Всё верно...
Но блог я пока не осилю.
Потому сюда запостил (ясно, что так или иначе, но что то бы сделал), так как эта тема может когда нибудь нагуглится кем то и это будет хорошо

ЗЫ:
Кстати теперь способ "Объекты как обёртки методов" ломает GUI, я вчера день потратил на распутывание и плюнул, решил реализовывать прокси как создание методов на лету

Я работаю над новым браузером Calypso. Могу поддержать ваш кейс.
Попробуйте загрузить из каталога. И скажите, где ломается. 
И пришлите пример кода для обертки методов.

(Все основные фичи работают)


(ибо просто переопределение doesNotUnderstand: примерно в 6 раз медленнее). Это не так изящно, но присутствие документации по GUI и иже с ним только в головах авторов не оставляют выбора. (Проект "Качели" кадр 6 :) )




четверг, 29 июня 2017 г., 11:50:42 UTC+3 пользователь Vladimir Musulainen написал:
Заведите блог и начните писать свои решения. 
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.

On 29 Jun 2017, at 11:13, Александр <[hidden email]> wrote:

ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
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.



--
Дмитрий Замоткин

--
--
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.

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Denis Kudriashov
Кстати, если есть объект метода, то для удаления скажите ему removeFromSystem

29 июня 2017 г. 14:06 пользователь "Denis Kudriashov" <[hidden email]> написал:


29 июня 2017 г. 11:47 пользователь "Александр" <[hidden email]> написал:
Всё верно...
Но блог я пока не осилю.
Потому сюда запостил (ясно, что так или иначе, но что то бы сделал), так как эта тема может когда нибудь нагуглится кем то и это будет хорошо

ЗЫ:
Кстати теперь способ "Объекты как обёртки методов" ломает GUI, я вчера день потратил на распутывание и плюнул, решил реализовывать прокси как создание методов на лету

Я работаю над новым браузером Calypso. Могу поддержать ваш кейс.
Попробуйте загрузить из каталога. И скажите, где ломается. 
И пришлите пример кода для обертки методов.

(Все основные фичи работают)


(ибо просто переопределение doesNotUnderstand: примерно в 6 раз медленнее). Это не так изящно, но присутствие документации по GUI и иже с ним только в головах авторов не оставляют выбора. (Проект "Качели" кадр 6 :) )




четверг, 29 июня 2017 г., 11:50:42 UTC+3 пользователь Vladimir Musulainen написал:
Заведите блог и начните писать свои решения. 
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.

On 29 Jun 2017, at 11:13, Александр <[hidden email]> wrote:

ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
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.



--
Дмитрий Замоткин

--
--
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.

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse


четверг, 29 июня 2017 г., 15:08:52 UTC+3 пользователь Denis Kudriashov написал:
Кстати, если есть объект метода, то для удаления скажите ему removeFromSystem


Спасибо, запомню.

29 июня 2017 г. 14:06 пользователь "Denis Kudriashov" <[hidden email]> написал:
Я работаю над новым браузером Calypso. Могу поддержать ваш кейс.
Попробуйте загрузить из каталога. И скажите, где ломается. 
И пришлите пример кода для обертки методов.

(Все основные фичи работают)


 Я уже удалил свою реализацию через обёртки, но быстренько набросал минимум снова (ниже код)
Как понимаю проблема из-за обращения к методам метода, а вместо него объект который их не имеет.
Начал распутывать цепочку.., но притомился ;)

Файл прикрепить нельзя поэтому прямо текстом:
ProxyTMP.st

AbstractObjectsAsMethod subclass: #PTMPMethodWrapper
    instanceVariableNames
: ''
    classVariableNames
: ''
    poolDictionaries
: ''
    category
: 'ProxyTMP'!
!PTMPMethodWrapper methodsFor: 'evaluation' stamp: 'AlexanderR 6/29/2017 15:24'!
run
: selector with: arguments in: aReceiver
^ aReceiver data perform: selector withArguments: arguments! !

ClassTestCase subclass: #ProxyMakeMeErrorTest
    instanceVariableNames
: ''
    classVariableNames
: ''
    poolDictionaries
: ''
    category
: 'ProxyTMP'!
!ProxyMakeMeErrorTest methodsFor: 'tests' stamp: 'AlexanderR 6/29/2017 15:39'!
testMakeMeError
   
| proxy data |
    proxy
:= ProxyTMP new.
    data
:= {1 . 2 . 3}.
    proxy data
: data.
   
self assert: proxy first = data first.
   
"ProxyTMP methodDict removeKey: #first"! !

Object subclass: #ProxyTMP
    instanceVariableNames
: 'data'
    classVariableNames
: ''
    poolDictionaries
: ''
    category
: 'ProxyTMP'!
!ProxyTMP methodsFor: 'accessing' stamp: 'AlexanderR 6/29/2017 15:28'!
doesNotUnderstand
: aMsg
   
^ (data respondsTo: aMsg selector)
        ifTrue
: [ self class methodDict
at
:
aMsg selector
put
: PTMPMethodWrapper new.
                         aMsg sendTo
: self  ]
        ifFalse
: [ data doesNotUnderstand: aMsg ]! !
!ProxyTMP methodsFor: 'accessing' stamp: 'AlexanderR 6/29/2017 15:21'!
data
   
^ data! !
!ProxyTMP methodsFor: 'accessing' stamp: 'AlexanderR 6/29/2017 15:21'!
data
: anObject
    data
:= anObject! !




--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse
In reply to this post by Denis Kudriashov
Загрузил Calypso.
Он не ломается как наутилус, открывает дебагер. Это хорошо! Сподручнее распутывать змеиный клубок

четверг, 29 июня 2017 г., 15:06:51 UTC+3 пользователь Denis Kudriashov написал:


29 июня 2017 г. 11:47 пользователь "Александр" <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="g_7S6_QxBAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">gen...@...> написал:
Всё верно...
Но блог я пока не осилю.
Потому сюда запостил (ясно, что так или иначе, но что то бы сделал), так как эта тема может когда нибудь нагуглится кем то и это будет хорошо

ЗЫ:
Кстати теперь способ "Объекты как обёртки методов" ломает GUI, я вчера день потратил на распутывание и плюнул, решил реализовывать прокси как создание методов на лету

Я работаю над новым браузером Calypso. Могу поддержать ваш кейс.
Попробуйте загрузить из каталога. И скажите, где ломается. 
И пришлите пример кода для обертки методов.

(Все основные фичи работают)


(ибо просто переопределение doesNotUnderstand: примерно в 6 раз медленнее). Это не так изящно, но присутствие документации по GUI и иже с ним только в головах авторов не оставляют выбора. (Проект "Качели" кадр 6 :) )




четверг, 29 июня 2017 г., 11:50:42 UTC+3 пользователь Vladimir Musulainen написал:
Заведите блог и начните писать свои решения. 
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.

On 29 Jun 2017, at 11:13, Александр <[hidden email]> wrote:

ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
Pharo 6
Как удалить программно метод из класса что бы избежать ошибок?

банальный methodDict removeKey:  - приводит к ошибкам в том числе и в GUI
менее банальный removeSelectorSilently: - приводит к ошибке т.к. в RPackage>>classDefinedSelectors остаётся селектор уже удалённого метода.

--
--
<a href="http://groups.google.ru/group/sugr" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;" onclick="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;">http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.



--
Дмитрий Замоткин

--
--
<a href="http://groups.google.ru/group/sugr" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;" onclick="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;">http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
--
<a href="http://groups.google.ru/group/sugr" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;" onclick="this.href=&#39;http://groups.google.ru/group/sugr&#39;;return true;">http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес <a href="javascript:" target="_blank" gdf-obfuscated-mailto="g_7S6_QxBAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">sugr+uns...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse
In reply to this post by Genosse

Сори за офтоп...
кадр  смешной на глаза попался,  и как раз под настроение.. не смог удержаться :D


--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Denis Kudriashov
In reply to this post by Genosse
Кстати красный крест тоже можно дебажить. В хало меню красного морфа есть команда для дебага ошибки. Это конечно не удобно, иногда сложно выбрать нужный морф. И  кроме того, дебагер будет не на живом процессе.

29 июня 2017 г. 15:14 пользователь "Александр" <[hidden email]> написал:
Загрузил Calypso.
Он не ломается как наутилус, открывает дебагер. Это хорошо! Сподручнее распутывать змеиный клубок

четверг, 29 июня 2017 г., 15:06:51 UTC+3 пользователь Denis Kudriashov написал:


29 июня 2017 г. 11:47 пользователь "Александр" <[hidden email]> написал:
Всё верно...
Но блог я пока не осилю.
Потому сюда запостил (ясно, что так или иначе, но что то бы сделал), так как эта тема может когда нибудь нагуглится кем то и это будет хорошо

ЗЫ:
Кстати теперь способ "Объекты как обёртки методов" ломает GUI, я вчера день потратил на распутывание и плюнул, решил реализовывать прокси как создание методов на лету

Я работаю над новым браузером Calypso. Могу поддержать ваш кейс.
Попробуйте загрузить из каталога. И скажите, где ломается. 
И пришлите пример кода для обертки методов.

(Все основные фичи работают)


(ибо просто переопределение doesNotUnderstand: примерно в 6 раз медленнее). Это не так изящно, но присутствие документации по GUI и иже с ним только в головах авторов не оставляют выбора. (Проект "Качели" кадр 6 :) )




четверг, 29 июня 2017 г., 11:50:42 UTC+3 пользователь Vladimir Musulainen написал:
Заведите блог и начните писать свои решения. 
Если не сделаете, то ваши знания и опыт останутся вашим приватным достоянием. И следующий после вас снова будет жаловаться на отсутствие документации и все такое прочее.

On 29 Jun 2017, at 11:13, Александр <[hidden email]> wrote:

ну собственно  дошёл ощупью до removeSelector:
:) Вроде ошибок не замечаю... пока.
Не знаю может есть более штатное решение.

ЗЫ:
Каких то 2 часа на это... Чего не сделаешь для души :)
Вот собственно иллюстрация к тому, что не только на русском, но даже на английском документация крайне слаба.
В некоторых аспектах методы раскиданы х знает где по десятку классов не очевидным образом, плюс встроены в характерные длинючие цепочки.
И всё это прекрасным образом не документировано :D 


четверг, 29 июня 2017 г., 11:00:37 UTC+3 пользователь Dmitry Zamotkin написал:
В Pharo есть же Refactoring Browser? Посмотрите в сорсах, как там реализовано.

29 июня 2017 г., 9:17 пользователь Александр <[hidden email]> написал:
Вопрос публикуется в просветительских целях, т.с. заодно поддержать жизнь в конференции ;)

Вероятно сам докопаюсь, но всё же может кто то быстрее подскажет.
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.



--
Дмитрий Замоткин

--
--
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.

--
--
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Denis Kudriashov
In reply to this post by Genosse
А какой пакет используете для враперов? (AbstractObjectsAsMethod это откуда?)


29 июня 2017 г. 14:51 пользователь "Александр" <[hidden email]> написал:


четверг, 29 июня 2017 г., 15:08:52 UTC+3 пользователь Denis Kudriashov написал:
Кстати, если есть объект метода, то для удаления скажите ему removeFromSystem


Спасибо, запомню.

29 июня 2017 г. 14:06 пользователь "Denis Kudriashov" <[hidden email]> написал:
Я работаю над новым браузером Calypso. Могу поддержать ваш кейс.
Попробуйте загрузить из каталога. И скажите, где ломается. 
И пришлите пример кода для обертки методов.

(Все основные фичи работают)


 Я уже удалил свою реализацию через обёртки, но быстренько набросал минимум снова (ниже код)
Как понимаю проблема из-за обращения к методам метода, а вместо него объект который их не имеет.
Начал распутывать цепочку.., но притомился ;)

Файл прикрепить нельзя поэтому прямо текстом:
ProxyTMP.st

AbstractObjectsAsMethod subclass: #PTMPMethodWrapper
    instanceVariableNames
: ''
    classVariableNames
: ''
    poolDictionaries
: ''
    category
: 'ProxyTMP'!
!PTMPMethodWrapper methodsFor: 'evaluation' stamp: 'AlexanderR 6/29/2017 15:24'!
run
: selector with: arguments in: aReceiver
^ aReceiver data perform: selector withArguments: arguments! !

ClassTestCase subclass: #ProxyMakeMeErrorTest
    instanceVariableNames
: ''
    classVariableNames
: ''
    poolDictionaries
: ''
    category
: 'ProxyTMP'!
!ProxyMakeMeErrorTest methodsFor: 'tests' stamp: 'AlexanderR 6/29/2017 15:39'!
testMakeMeError
   
| proxy data |
    proxy
:= ProxyTMP new.
    data
:= {1 . 2 . 3}.
    proxy data
: data.
   
self assert: proxy first = data first.
   
"ProxyTMP methodDict removeKey: #first"! !

Object subclass: #ProxyTMP
    instanceVariableNames
: 'data'
    classVariableNames
: ''
    poolDictionaries
: ''
    category
: 'ProxyTMP'!
!ProxyTMP methodsFor: 'accessing' stamp: 'AlexanderR 6/29/2017 15:28'!
doesNotUnderstand
: aMsg
   
^ (data respondsTo: aMsg selector)
        ifTrue
: [ self class methodDict
at
:
aMsg selector
put
: PTMPMethodWrapper new.
                         aMsg sendTo
: self  ]
        ifFalse
: [ data doesNotUnderstand: aMsg ]! !
!ProxyTMP methodsFor: 'accessing' stamp: 'AlexanderR 6/29/2017 15:21'!
data
   
^ data! !
!ProxyTMP methodsFor: 'accessing' stamp: 'AlexanderR 6/29/2017 15:21'!
data
: anObject
    data
:= anObject! !





--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse
В стандартной поставке Фаро (по кр. мере 6-ой)
Всёго лишь реализует заглушки для 6 методов

'From Pharo6.0 of 13 May 2016 [Latest update: #60499] on 30 June 2017 at 7:13:49.177373 am'!
Object subclass: #AbstractObjectsAsMethod
    instanceVariableNames
: ''
    classVariableNames
: ''
    poolDictionaries
: ''
    category
: 'Tests-ObjectsAsMethods'!
!AbstractObjectsAsMethod methodsFor: 'compatibility' stamp: 'DenisKudryashov 11/15/2016 13:53'!
package
   
^self class package! !
!AbstractObjectsAsMethod methodsFor: 'compatibility' stamp: 'md 3/1/2006 14:25'!
flushCache
! !
!AbstractObjectsAsMethod methodsFor: 'compatibility' stamp: 'MarcusDenker 2/11/2013 16:06'!
origin
   
^self class! !
!AbstractObjectsAsMethod methodsFor: 'compatibility' stamp: 'md 3/1/2006 14:23'!
selector
: aSymbol! !
!AbstractObjectsAsMethod methodsFor: 'compatibility' stamp: 'md 3/1/2006 14:23'!
methodClass
: aMethodClass! !
!AbstractObjectsAsMethod methodsFor: 'compatibility' stamp: 'MarcusDenker 2/11/2013 15:34'!
pragmas
   
^#()! !

ЗЫ: Кстати, о чём я говорю?! Не узнаёте случайно ФИО одного из разработчиков, приложивших к нему руку? :D


четверг, 29 июня 2017 г., 18:46:23 UTC+3 пользователь Denis Kudriashov написал:
А какой пакет используете для враперов? (AbstractObjectsAsMethod это откуда?)





--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Denis Kudriashov

30 июня 2017 г., 6:17 пользователь Александр <[hidden email]> написал:
ЗЫ: Кстати, о чём я говорю?! Не узнаёте случайно ФИО одного из разработчиков, приложивших к нему руку? :D

Забавно :) 
Скорее всего, я просто перенес unclassifyed метод в другой категорию (cleanup) . 

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Denis Kudriashov

3 июля 2017 г., 17:13 пользователь Denis Kudriashov <[hidden email]> написал:
30 июня 2017 г., 6:17 пользователь Александр <[hidden email]> написал:
ЗЫ: Кстати, о чём я говорю?! Не узнаёте случайно ФИО одного из разработчиков, приложивших к нему руку? :D

Забавно :) 
Скорее всего, я просто перенес unclassifyed метод в другой категорию (cleanup) . 

Есть тесты, которые  репортят методы. Вероятно, когда-то я их запустил и заметил.

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse
кстати, просто мысль в слух.
Смежная тема.

Класс прокси вроде как логичнее наследовать не от Объекта, а от ПротоОбъекта.
Если прокси использовать не как просто заглушку самозаменяющуюся на некий объект, а как и своеобразную обёртку (например хранящую какието переменные, и методы, которыми не хочется захломлять класс Объект), то получается нехорошая штука.
Весь пакет методов отвечающих за инспектирование объектов реализованы ниже - в классе Объект, из-за чего при просмотре прохи возникают серьёзные проблемы.

Вот просто просится между 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Denis Kudriashov
Попробуйте проект Ghost http://dionisiydk.blogspot.fr/2016/03/new-version-of-ghost-is-out.html
Идея была сделать универсальный фреймворк для проксей (проект был создан Mariano Peck).

К сожалению актуальной документации нет. Но классы с комментами, и тесты демонстрируют, как создавать специфичные объекты. 

4 июля 2017 г., 5:22 пользователь Александр <[hidden email]> написал:
кстати, просто мысль в слух.
Смежная тема.

Класс прокси вроде как логичнее наследовать не от Объекта, а от ПротоОбъекта.
Если прокси использовать не как просто заглушку самозаменяющуюся на некий объект, а как и своеобразную обёртку (например хранящую какието переменные, и методы, которыми не хочется захломлять класс Объект), то получается нехорошая штука.
Весь пакет методов отвечающих за инспектирование объектов реализованы ниже - в классе Объект, из-за чего при просмотре прохи возникают серьёзные проблемы.

Вот просто просится между 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Удаление метода без ошибок

Genosse
Хотя уже свой наваял, но весьма  любопытно, посмотрю...

Скорее всего там те же проблемы с интроспекцией и со всеми инструментами отладки.

Вообще, начало казаться, что не совсем правильно т.с. со стратегической т.з. пошло развитие инструментов интроспекции и отладки.
Более 30 методов (!) пришлось продублировать в InspectedProtoObject, что бы перестал отваливаться inspector и т.п.
И видимо это кол-во будет расти.
Это не совсем нормально.
Понятно, что это самое простое - вкарячить очередной метод в Object, но это выглядит не правильным в глобальном плане. Подобных методов должно быть исключительный минимум, а Инспектор должен работать на всех объектах образа едино и не навязчиво.
PS. Я отдаю себе отчёт, что сейчас это уже крайне сложно сделать и это очень массивная перестройка... Это просто мысль высказанная в слух )
   


вторник, 4 июля 2017 г., 22:12:49 UTC+3 пользователь Denis Kudriashov написал:
Попробуйте проект Ghost <a href="http://dionisiydk.blogspot.fr/2016/03/new-version-of-ghost-is-out.html" style="font-size:12.800000190734863px" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://dionisiydk.blogspot.fr/2016/03/new-version-of-ghost-is-out.html&#39;;return true;" onclick="this.href=&#39;http://dionisiydk.blogspot.fr/2016/03/new-version-of-ghost-is-out.html&#39;;return true;">http://dionisiydk.blogspot.fr/2016/03/new-version-of-ghost-is-out.html
Идея была сделать универсальный фреймворк для проксей (проект был создан Mariano Peck).

К сожалению актуальной документации нет. Но классы с комментами, и тесты демонстрируют, как создавать специфичные объекты. 

4 июля 2017 г., 5:22 пользователь Александр <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="-i8YZxrSBQAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">gen...@...> написал:
кстати, просто мысль в слух.
Смежная тема.

Класс прокси вроде как логичнее наследовать не от Объекта, а от ПротоОбъекта.
Если прокси использовать не как просто заглушку самозаменяющуюся на некий объект, а как и своеобразную обёртку (например хранящую какието переменные, и методы, которыми не хочется захломлять класс Объект), то получается нехорошая штука.
Весь пакет методов отвечающих за инспектирование объектов реализованы ниже - в классе Объект, из-за чего при просмотре прохи возникают серьёзные проблемы.

Вот просто просится между ProtoObject и Object какой нибудь BaseObject, в который перенести всю кухню инспекции (он будет обладать минимализмом ProtoObject и в тоже время не будет неполноценным).

Я пока выхожу из ситуации просто банальным дублированием нужного кода в потомка ПротоОбъекта этакий InspectedProtoObject
<a href="http://smalltalkhub.com/#!/~AlexanderRemizov/InspectedProtoObject" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fsmalltalkhub.com%2F%23!%2F~AlexanderRemizov%2FInspectedProtoObject\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNEYzWv3oTGUjGOknNUSS3yBENgKWQ&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fsmalltalkhub.com%2F%23!%2F~AlexanderRemizov%2FInspectedProtoObject\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNEYzWv3oTGUjGOknNUSS3yBENgKWQ&#39;;return true;">http://smalltalkhub.com/#!/~AlexanderRemizov/InspectedProtoObject (этих методов вроде достаточно, что бы не крашился инспектор)
на котором уже и реализую прокси на объектах и прокси на словарях

--
--
http://groups.google.ru/group/sugr
---
Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email].
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
12
Loading...