Page 8 of 24

Posted: Thu Feb 02, 2012 4:14 pm
by Allid
Infocatcher
Спасибо!

Posted: Thu Feb 02, 2012 4:19 pm
by Infocatcher
DV wrote:Могут быть проблемы с переносом строк, однако сама лаконичность скрипта просто заставляет прослезиться :)
Там же, вроде, "\r" по умолчанию отдает.

Posted: Thu Feb 02, 2012 7:36 pm
by DV
Infocatcher wrote:Там же, вроде, "\r" по умолчанию отдает.
Это да. Но я ещё думал о том, что скрипт меняет порядок строк. Хотя этот момент не был оговорен в условии задачи: нужно ли сохранять изначальный порядок строк, инвертируя символы в каждой строке, или же проинвертировать всё, включая и порядок строк.
Мысль в тему:
Способность говорить сложно о простом приходит с многолетней практикой. Это очень полезно для философов, психологов, юристов и т.п. Но не для программистов: тут всё наоборот. Чем проще input, тем эффективней output.

Posted: Thu Feb 02, 2012 8:15 pm
by Infocatcher
DV wrote:нужно ли сохранять изначальный порядок строк
А, это.
Жаль, что мелкомягкие не приделали еще Array.map().

Чтобы было:
reverseEachLine.js

Code: Select all

var lines = AkelPad.GetSelText().split("\r");
for(var i = 0, l = lines.length; i < l; ++i)
	lines[i] = lines[i].split("").reverse().join("");
AkelPad.ReplaceSel(lines.join("\r"));
DV wrote:Мысль в тему
Известное дело: усложнять просто, упрощать – сложно. :)

Posted: Thu Feb 02, 2012 8:37 pm
by FeyFre
Жаль, что мелкомягкие не приделали еще Array.map().
Ну а что мешает приведенную по ссылке реализацию скопипастить в скрипт? Даже редактировать не нужно будет.

Posted: Fri Feb 03, 2012 3:37 am
by Infocatcher
FeyFre
Да как-то смысла особого нет, для одного-то применения. :)

Posted: Fri Feb 03, 2012 8:14 am
by VladSh
DV wrote:Мысль в тему...
есть

Posted: Fri Feb 03, 2012 9:42 am
by FeyFre
Да как-то смысла особого нет, для одного-то применения.
То то я смотрю в каждом втором скрипте вместо

Code: Select all

AkelPad.Include("win32\\user32.js")
var IDC_DOWORK = 1234;
AkelPad.SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(IDC_DOWORK,BN_CLICKED),0,0);
делают какое-то непонятное, абсолютно нечитаемое и не поддерживаемое

Code: Select all

AkelPad.SendMessage(hwnd,237,1234,0,0);
(Уже не говорю о постоянных магических смещениях относительно каких-то там указателей)

Posted: Fri Feb 03, 2012 9:58 am
by VladSh
FeyFre
Ну то дело вкуса. Мне удобнее цифири писать с обязательной докой возле них.
В констах безусловно есть достоинство - в одном месте определил и всё, и меняешь потом в одном месте, если что-то поменялось. Но мне не нравится, что для вытягивания 1-2 констант надо подгружать весь файл.. грамотнее бы разбивку организовать.
FeyFre wrote:(Уже не говорю о постоянных магических смещениях относительно каких-то там указателей)
А вот это поддерживаю - сильно усложняет и чтение, и программинг, и поддержку кода.

Posted: Fri Feb 03, 2012 10:12 am
by Infocatcher
FeyFre wrote:(Уже не говорю о постоянных магических смещениях относительно каких-то там указателей)
Это же js, тут все привыкли к ословодству. :D
Хотя, по большому счету, сюрпризы от новых версий Оперы обычно куда внезапнее. :)

Posted: Fri Feb 03, 2012 10:54 am
by FeyFre
VladSh
А вот уже который раз сажусь за создание AkelDll.js и AkelEdit.js
А какой раз я сажусь за врапперы вокруг указателей на часто используемые структуры(вместо var name = AkelPad.MemRead(mem+_X64?160:144,DT_DWORD) делать что-то типа var pFrameData = FRAMEDATA(mem); var name = pFrameData.lpszFileName )
Но мне не нравится, что для вытягивания 1-2 констант надо подгружать весь файл.
Ну кто ж виноват что пишите примитивные скрипты? Моим скриптам приходится 2-з десятка констант использовать, минимум.
грамотнее бы разбивку организовать.
Ага, а потом сбивку? Включение базового прокси header-файла Windows SDK windows.h приводит к включению ещё 58 header файлов(исключая C-шные header-ы, декораторы деклараций и выравниватели памяти в структурах), в которых собственно и определяется вся начинка(это только базовый функционал). Если хорошенько попросить препроцессор, то это число сокращается до 19-ти, а если очень попросить то до 17. Тут вопрос встает: а стоит ли оно того?
Ну то дело вкуса. Мне удобнее цифири писать с обязательной докой возле них.
Типа так 273 /*WM_COMMAND*/ ? Ну, ну. У меня на 10 строчек 20 таких случаев, и вот внезапно мне приспичило закомментировать эти строчки. `/*` вначале и `*/` в конце. Угадайте что у меня получится? Правильно, комментарий дотянется до превого же `*/` и на этом закончится.

Posted: Fri Feb 03, 2012 10:58 am
by FeyFre
Хотя, по большому счету, сюрпризы от новых версий Оперы обычно куда внезапнее.
Оо какие сюрпризы?? Опера полностью удовлетворяет ECMA262 5.1 минус мелкое исключение(parseInt() по прежнему распознает строки начинающиеся с 0 как восьмеричные, хотя стандарт запретил это.) А больше сюрпризов и нету.
тут все привыкли к ословодству.
Говорим за себя.

Posted: Fri Feb 03, 2012 11:41 am
by Infocatcher
FeyFre wrote:Оо какие сюрпризы?? Опера полностью удовлетворяет ECMA262 5.1 минус мелкое исключение(parseInt() по прежнему распознает строки начинающиеся с 0 как восьмеричные, хотя стандарт запретил это.) А больше сюрпризов и нету.
Да разные, я только изредка веб-разработками занимаюсь и записей не веду.
А сюрпризы обычно на уровне взаимодействия с DOM – то не перерисуется что-нибудь после изменения, то еще что-нибудь.
А потом они могут изменить приведение нативных функций к строке и выдать вместо "[native code]" "/* source code not available */", а потом вернуть как было (вроде, вернули, не проверял).
Или <noscript> вдруг сломают, и он перестанет отображаться (сейчас уже работает).
Дело не столько в реальных проблемах, сколько в их неожиданности. А вот в IE как было все по-своему сделано, так и работает. Через не то место, но вполне стабильно. Хотя 9-й версии хоть что-то менять стали типа поддержки addEventListener().
http://www.google.ru/search?as_q=%D0%BD ... ascript.ru
Но реальных проблем актуальных версий назвать сразу не могу. :)

Posted: Fri Feb 03, 2012 1:05 pm
by VladSh
FeyFre wrote:Ну кто ж виноват что пишите примитивные скрипты?
Никто не виноват, я их пишу такими специально :) Потому что исхожу всегда из принципа достаточности, - считаю, что пихать где не попадя вызовы WinAPI, это извращение. Взять большинство скриптов с диалогами, - вроде всё красивенько так.. а работать неудобно, т.к. чаще всего нужно именно запустить скрипт с часто используемыми параметрами из меню/тулбара/хоткея, а не постоянно разглядывать диалоги с кучей чекбоксов и радиобаттонов... Мои скрипты как раз и доказывают, что 95% задач прекрасно решаются без "пушки по воробьям"; 'примитивность', т.е. простота, в этом случае только плюс.

> Opera
Пример: window.getSelection() ещё в 10.10 сломали (не работало в search-полях и т.п.), с 11.50 в полях поправили, но на странице продолжает глючить.

Posted: Fri Feb 03, 2012 3:59 pm
by FeyFre
Пример: window.getSelection() ещё в 10.10 сломали (не работало в search-полях и т.п.), с 11.50 в полях поправили, но на странице продолжает глючить.
А ткните мне пальцем в стандарт. А то я что-то не нашел. Вот нашел
1.2. Not in This Specification

This section is not normative.

This specification does not include the following features, which are also found on the Window object in some implementations. It is possible they will defined by other specifications or found in a future version of this specification.
History
ISSUE-59: Should Window 1.0 include history?
Access to frames by name
ISSUE-60: Should Window Object 1.0 include access to frames by name (window.frames)?
Opening new windows
Manipulating UI of existing windows
Window size and position information
Client information ("window.navigator")
Window events
Printing
Focus
Selection
Editing
Networking APIs
Handling of binary data