myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему

> Вопрос по НоутПад++

Теги
Нет тегов для показа
district
сообщение 9.5.2009, 14:22
Сообщение #1


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Вопрос: закрываю ноутпад - функции свернуты (см.картинку)... Открываю - опять зараза все развернуты. Как это можно побороть?
Прикрепленные файлы
Прикрепленный файл  NotePad__.PNG ( 10.81 килобайт ) Кол-во скачиваний: 40
 
Go to the top of the page
+Quote Post
Setuper
сообщение 9.5.2009, 16:52
Сообщение #2


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Побороть никак. Данная фишка сделана для удобства только на время разработки.
Go to the top of the page
+Quote Post
district
сообщение 9.5.2009, 16:59
Сообщение #3


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Жаль... глючит иногда, перезапускать приходится. И ресурса с памятью (на откатах видимо) много кушать начинает. Но все равно спасибо, теперь хоть ясность есть.
Go to the top of the page
+Quote Post
Setuper
сообщение 9.5.2009, 17:06
Сообщение #4


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Хм... Глючит? Это странно. У меня за всю работу никогда не глючил.
Попробуй обновить версию.

Лично я ставлю ansi версию, так как под юникод нет плагина FunctionList, который очень удобен. С данным плагином и не нужно свёртывать функции, просто щёлкнул по нужной, и курсор установился на начало это функции big_smile.gif
Go to the top of the page
+Quote Post
ustas
сообщение 9.5.2009, 19:44
Сообщение #5


Продвинутый участник
****

Группа: Пользователи
Сообщений: 177
Регистрация: 20.5.2008
Пользователь №: 5
Спасибо сказали: 26 раз




Цитата(Setuper @ 9.5.2009, 18:06) *
..так как под юникод нет плагина FunctionList
есть
Go to the top of the page
+Quote Post
Setuper
сообщение 9.5.2009, 20:07
Сообщение #6


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




где?

Есть только под ansi: http://sourceforge.net/project/showfiles.p...ckage_id=223668
Go to the top of the page
+Quote Post
ustas
сообщение 9.5.2009, 22:01
Сообщение #7


Продвинутый участник
****

Группа: Пользователи
Сообщений: 177
Регистрация: 20.5.2008
Пользователь №: 5
Спасибо сказали: 26 раз




http://ifolder.ru/12033793
Go to the top of the page
+Quote Post
Nickolya
сообщение 9.5.2009, 23:19
Сообщение #8


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Вот зачем выкладывать хрен знает куда? Там же срок хранения есть... Прилагаю. nothing_to_say.gif
Прикрепленные файлы
Прикрепленный файл  FunctionList_unicode.rar ( 61.38 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
+Quote Post
ustas
сообщение 10.5.2009, 11:05
Сообщение #9


Продвинутый участник
****

Группа: Пользователи
Сообщений: 177
Регистрация: 20.5.2008
Пользователь №: 5
Спасибо сказали: 26 раз




виноват, не подумал
Go to the top of the page
+Quote Post
district
сообщение 10.5.2009, 15:19
Сообщение #10


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Тоже хочу пять копеечек внести. Оказалось, у меня НоутПад 4.7.2 (рус). Пробовал подключить FunctionList 2 Alfa - не пошло. Порылся, нашел дллку 1.2 версии, подключил, все замечательно. Очень удобная и полезная фича. Прикреплю ее тут на всякий случай.
Когда ботик строк так на 50, то может и ничего, а вот когда под 3000 - вот тут очень много времени тратится на шарахания в поисках нужного места в коде. Тут-то плагин и выручает.
Прикрепленные файлы
Прикрепленный файл  FunctionList_1_2_dll.zip ( 69.31 килобайт ) Кол-во скачиваний: 4
 
Go to the top of the page
+Quote Post
Setuper
сообщение 10.5.2009, 15:56
Сообщение #11


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




3000 строк - это жёстко. Подобного рода коды просто необходимо дробить на файлы, чтобы самому же не запутаться big_smile.gif
А вообще, советую любой достаточно большой проект дробить на файлы по функциональности того или иного класса выполняемых задач. Дробление на файлы - это хороший тон программирования. big_smile.gif
Go to the top of the page
+Quote Post
district
сообщение 10.5.2009, 17:39
Сообщение #12


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Так я не против разделения (дробления), кое-что уже научился делать - подключать модули способом dofile... Просто, как написано в одной мудрой книге, "Есть время разбрасывать камни, а есть время их собирать". Вот соберем все в кучу, осмыслим, что получилось, а там и подробить можно будет.

... вот кстати и вопрос сразу же, по теме. Есть несколько подключаемых модулей. В настройках выбирается, использовать тот или другой. Соответственно, они вызываюся при старте скрипта или не вызываются. А как быть с совершенно невообразимой длины ChatArrival ? Как его функционально разделить, возможно ли это? Пока что в нем предусмотрена отработка команд для всех возможных модулей, т е ChatArrival единый и неделимый.

... а впрочем чуть подумав уже раскидал. Получился центральный модуль, около 1500 строк, там в основном ChatArrival, Main, таблицы под генерацию "матричного" меню с невообразимым количеством возможных команд, да функции вспомогательные для формирования и вывода отчетности. И семь подключаемых модулей, разбитых по функциональной принадлежности... Переменные локальные в центральном модуле большей частью пришлось на глобальные переделать - а как же, без них модули работать отказываются ;) В общем, мне это нравится big_smile.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 10.5.2009, 21:50
Сообщение #13


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ты на верном пути. Вот только размышления не совсем верные. Нужно написать систему плагинов, которая будет подключать тот или иной модуль, и выполнять ту или иную функцию из модуля, отвечающую за то или иное действие. Центральный модуль должен содержать минимум строк для того, чтобы его можно было легко переписать под работу на другом api или вовсе под другой хаб (со своим api). Также стоит выделить отдельно модуль отсылок сообщений, модуль api функций, модуль хранилища информации (файлы или бд), модуль протокола, модуль утилит, модуль конфигурации, модуль-дебагер, модуль запросов, модуль обработки команд ну и тд. и тп. Тут дел много. Да и вот ещё... Нужно всякими способами избегать использование глобальных переменных, так как обращение к локальным переменным происходит быстрее.

Именно модульная система позволяет с минимальными затратами (переписав всего лишь пару модулей) адаптировать скрипт под работу на другом протоколе, или на другом хабе, или под другой api, или с другим типом хранения информации и тп.


Несколько слов про подключение модулей (как избежать использование глобальных переменных).

Пример:

Допустим у нас есть какой-то основной файл скрипта test.lua и файл модуля module.lua (файлы находятся в одной папке)

test.lua
Код
local sMainPath = debug.getinfo(1).source:match("^@(.+[/\\]).-$"):gsub('\\','/')
package.path = sMainPath.."?.lua;"..package.path

local mObj = require"module"


function ChatArrival(tUser, sData)
  local sBot = sData:match"%b<> !setbot%s+(%S+)|"
  if sBot then
    mObj:SetBot(sBot)
    Core.SendToUser(tUser, ("<%s> Новый бот установлен"):format(mObj:GetBot()))
  end
end


module.lua
Код
do
  local sBot = "Бот"

  return {
    SetBot = function(self, _sBot)
      sBot = _sBot
    end;

    GetBot = function(self)
      return sBot
    end;
  }
end


Хочу заметить, что существует 2 вида подключения модулей dofile и require. Тут предложен второй.
Различия между ними:
1) dofile загружает любые файлы по указанному пути, require загружает только lua или dll файлы (lua файлы ищутся в директориях, которые содержатся в переменной package.path (можешь вывести эту переменной и посмотреть содержимое - это строковая переменная), в этой переменной все пути разделены знаком ; а на место вопроса подставляется название модуля. Файлы dll загружаются по путям переменной package.cpath)
2) dofile загружает файл каждый раз при использовании, require загружает только один раз при первом обращении к этому файлу, при остальных обращениях используется старая загрузка. То есть можно сказать, что dofile передает параметры по значения, а require передаёт параметры по ссылке.

Именно из-за второго пункта можно в 10 местах (файлах) написать local mObj = require"module", однако локальная переменная local sBot будет принимать последнее значение, которое мы ей установили методом SetBot.

Вот я изложил кратко принцип загрузки и избавления от локальных переменных (принцип инкапсуляции).

А вообще по хорошему надо использовать классы, но об этом говорить я думаю (в данной ситуации) пока рано big_smile.gif
Go to the top of the page
+Quote Post
district
сообщение 11.5.2009, 2:51
Сообщение #14


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Цитата
2) dofile загружает файл каждый раз при использовании, require загружает только один раз при первом обращении к этому файлу, при остальных обращениях используется старая загрузка.

Вот это ценная информация, над ней надо в первую очередь подумать.
Это ж как говорил Портос, безумное расточительство, загружать каждый раз при каждом обращении (!) например какую-нибудь постоянную, неизменную таблицу.
Цитата
об этом говорить я думаю (в данной ситуации) пока рано

Это точно, сразу замахиваться на шедевр и стремиться утереть нос индусам-программерам тоже пока рановато big_smile1.gif
Go to the top of the page
+Quote Post
district
сообщение 6.7.2009, 12:49
Сообщение #15


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Нечаянно наткнулся на ту фишку, с поиска которой начался топик. Сочетание Alt+1 сворачивает все функции... Теперь ищу сочетание, которое разворачивает их обратно big_smile1.gif
Может все-таки быть альтернативой плагину, иногда. Он как-никак занимает часть экрана, а это не всегда удобно ( приходится включать перенос строк), да и функции искать глазами иногда удобнее не в вынесенном списке, а "вживую" .
Попутно наткнулся на очень замечательную фишку дублирования строки, на которой установлен курсор : Clrl+D
Go to the top of the page
+Quote Post
Setuper
сообщение 6.7.2009, 19:09
Сообщение #16


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Хехе.
Этих открытий можно было и не делать, а просто посмотреть список горячих клавиш (меню Опции -> Горячие клавиши) big_smile.gif
Кстати, там можно устанавливать свои собственные горячие клавиши big_smile.gif Например, удобно установить горячую клавишу на действие "копировать имя файла в буфер обмена".

Я для себя установил клавишу F5 - запуск приложения из командной строки, F9 - скомпилировать lua код big_smile.gif
Go to the top of the page
+Quote Post
district
сообщение 7.7.2009, 3:16
Сообщение #17


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Setuper
Ну дык, было бы время детально прогу изучить - и вопросов бы не было ))
Тогда еще пара вопросов.
1.Вот сместить ( табулировать ) выделенный кусок кода вправо - это понятно как, а вот влево - бывает такое ? Если да, то как это делается ?
2.Что означает "скомпилировать Lua-код"?
Go to the top of the page
+Quote Post
Setuper
сообщение 7.7.2009, 12:35
Сообщение #18


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




А зачем влево? Есть настройка табулирования. Я себе установил, чтобы табуляция заменялась двумя пробелами - это распространённое действие.

Скомпилированный lua код - это означает использование luac для получения бинарного файла из обычного текстового.
Go to the top of the page
+Quote Post
district
сообщение 7.7.2009, 13:22
Сообщение #19


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Цитата
А зачем влево?

Чтобы красиво было, и было удобно читать. Чтобы for, if и т д падали четко на end. С первого раза ведь никогда не получится все по ступенькам расставить, приходится двигать куски кода вправо-влево.
Go to the top of the page
+Quote Post
Setuper
сообщение 7.7.2009, 14:08
Сообщение #20


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Хм... не знаю что ты там двигаешь, у меня всегда все нормально получается.
Просто нужно настроить табуляцию на замену двумя пробелами.
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Вопрос по функции
0 000000 4 055 7.1.2018, 12:55 Посл. сообщение: 000000
No New Posts Важный вопрос
6 000000 8 124 2.9.2016, 10:33 Посл. сообщение: Артём
No New Posts Важный вопрос!
0 000000 4 835 16.8.2016, 1:28 Посл. сообщение: 000000
No New Posts От: вопрос по NMDC.
От темы с ID: 4932
0 MIKHAIL 5 237 25.1.2013, 19:48 Посл. сообщение: MIKHAIL
No New Posts Вопрос по регулярным выражениям (не относится к lua)
1 Accelerator 7 245 22.12.2012, 18:37 Посл. сообщение: Setuper
No New Posts вопрос по NMDC.
.
6 Lamo 12 801 29.5.2012, 19:35 Посл. сообщение: Lamo
No New Posts вопрос
5 kirovograd77 9 934 29.5.2012, 0:08 Посл. сообщение: kirovograd77
No New Posts Вопрос по Написанию Слрипта
1 mmk 5 574 20.5.2012, 13:37 Посл. сообщение: Saymon21
No New Posts Вопрос по регулярным выражениям
4 arktik 7 155 26.1.2012, 13:38 Посл. сообщение: Enyby
No New Posts Вопрос к экспертам по LUA
3 arktik 9 742 21.8.2011, 14:25 Посл. сообщение: arktik
No New Posts Вопрос про AntiFlood
3 arktik 7 500 10.8.2011, 14:29 Посл. сообщение: ShadoWx
No new Вопрос
Вопрос о PtokaX и НетБуке
27 STIVAN 23 439 22.6.2011, 21:36 Посл. сообщение: ustas
No New Posts Вопрос
4 the623 7 999 14.6.2011, 11:38 Посл. сообщение: the623
No New Posts Topic has attachmentsВопрос по доработке срипта StatPX как переделать...
12 Blazer 21 982 26.4.2011, 15:33 Посл. сообщение: Dani
Closed Topic has attachmentsВопрос по скрипту StatPX как сделать...
1 Blazer 7 364 19.2.2011, 19:55 Посл. сообщение: Accelerator

 



RSS Сейчас: 26.4.2024, 19:04