Перейти к содержимому


Фотография

MineCode IDE (подсветка синтаксиса, отладчик, автодополнение, файловый менеджер, копипастинг)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 28

#1 Оффлайн   ECS

ECS
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 19 Март 2017 - 12:32

*
Популярное сообщение!

61782f4cd59faaebbbb9c70e7407444b.png
 
Команда для установки:

pastebin run z7S75BBP 

Чтобы запустить программу после того, как инсталлер загрузит все необходимые компоненты, используйте

​/MineCode/MineCode.lua
или
/MineCode/MineCode.lua open <путь к файлу>

О программе:

 

Честно говоря, первый раз увидев дефолтный редактор опенкомпов, у меня задергался левый глаз. Поэтому, недолго думая, мы с товарищами решили написать полноценную среду разработки, заточенную под удобство использования и максимальное быстродействие. 
 
Итак, первое и самое главное на мой взгляд - это подсветка Lua-синтаксиса. Теперь кодер может хотя бы визуально отличать одну часть кода от другой без напряжения зрения. Все цвета являются настраиваемыми, их можно изменять под локальный "вкус и цвет" пользователя. Имеется возможность отключения подсветки при помощи кнопки "◌" если вы играете на низкопроизводительном сервере.
 
0b6e12977ad1ec5f87c391afafba07a0.png 2362025da6f44fca7d6117860196cd81.png
 
Второе в моем субъективном списке "полезности" - это запуск приложений в реальном времени, не отрываясь от процесса их написания. Просто нажимаете на кнопку "▷" и получаете результат:
 
05066fa3585e00b7f53f930d24d8e099.png 4d60fe8b49dc10dcf4ea9bacc1ed1407.png
 
Третья полезность среды разработки - это автоматическое дополнение вводимой информации по аналогии с технологией IntelliSense. Кроме того, все вводимые скобки и кавычки будут также автоматически дополняться их "закрывающими" эквивалентами, с удалением это также работает. Для экономии памяти и увеличения производительности обе фичи можно отключить:
 
a16f33a43ddfb9092b7b39fbb53aac72.png 827f44328fceac282714fd2db5566a68.png
 
При возникновении любой ошибки в вашем приложении MineCode IDE автоматически вернет вас к разработке, выдав подробный стек ошибки и подсветив ошибочную строку:
 
1f8c89a3929c286170bd68a803e5a676.png e87af150bb20dd620a24fd5f5f709b0a.png
 
Четвертая наиболее полезная функция - это отладчик. Он позволяет вам выставлять так называемые "брейкпоинты" путем нажатия на кнопку "*" и узнавать, какое значение принимает та или иная переменная в исполняемом скрипте. После каждого "брейкпоинта" выполнение программы может быть продолжено или приостановлено:
 
f9e7ed4ca0a8d61efa49d8067977b05e.png
 
Пятая фича программы - это возможность полноценного выделения и копипастинга, которого так не хватает в стандартном редакторе OpenOS:
 
d1b742ea9abec067ba0816032903549f.png df1149c22af13145d923411be353ce14.png
 
Выделенные участки кода можно комментировать, табулировать и детабулировать - все как во "взрослых" редакторах кода.
 
51aa3e2382df8dd75a31b2e46c443daa.png 109da3a8c56e256c66d89e62a241f7cf.png
 
Чтобы выделить слово, достаточно кликнуть по нему дважды. Также имеется удобный инструмент для работы с вводимым цветом в шестнадцатеричном формате. Выделяете его - выбираете соответствующую опцию контекстного меню и получаете результат:
 
7dcf53b1322ee30cf2aae723c82501ce.png 82bd9ce9e965c78a5889bcf2a0ed3e3e.png
 

Разумеется, мы также реализовали виджет поиска по коду с возможностью переключения чувствительности к регистру:

 

a0310039b71def1bab31cf936d2d4985.png

 

Среди прочих функций стоит отметить удобное древо навигации по файловой системе, возможность загрузки файла из интернета, возможность смены цвета и стиля курсора, возможность отключения всех панелей инструментов, возможность быстрой навигации по различным критериям, возможности изменения разрешения экрана, наличие всевозможных клавиатурных шорткатов и ссылок на них в соответствующих пунктах меню.
 
9343a18bff1f5783820e3db07d7404e1.jpeg e2ca8bef550e3d0b418723e60a9d05b3.jpeg 3238a53c824ce0e088f1f35efc93e268.jpeg 85339cdd1ca086a2afa8053c777695d4.jpeg 6bc01339e2d5cc4cd27ceb554769744b.jpeg 39a318a7e1ddbadfa17b300befc2f278.jpeg

 

Также отдельно хотелось бы отметить всех людей, так или иначе принимавших участие в разработке и отладке программы:

 
c3f93b132e2b20d86656477ca71307b2.png
 

Вся программа целиком и полностью работает на интерфейсной библиотеке GUI и библиотеке тройной буферизации. Исходный код доступен на GitHub:

Напоследок скажу, что, разумеется, куда удобнее и практичнее редактировать большие файлы напрямую в предпочтительном для вас редакторе кода, однако при отсутствии возможности прямой заливки файлов на сервер и для экономии времени MineCode IDE становится незаменимым инструментом для разработки простого ПО.


Сообщение отредактировал ECS: 23 Март 2017 - 15:43


#2 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 19 Март 2017 - 12:37

Шедевр.


  • Fingercomp, 1kovand1 и Laine_prikol это нравится

#3 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 735
  • Уровень сигнала: 52,61%
  • В игре: 392 час. 51 мин.

Награды

                 

Отправлено 19 Март 2017 - 12:45

Шедевр.

ага) не то слово.  В видосе не покидает ощущение, что сейчас вот-вот да будет какая-то фича, которой даже в саблайме нет :D  


  • Laine_prikol это нравится

#4 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 19 Март 2017 - 18:49

Не знаю почему, но мне не удалось установить MineCode.

Прикрепленный файл  MineCode1.png   20,48К   33 Количество загрузок:

И после устранения очепятки в 65-ой строке инсталлера...

Прикрепленный файл  MineCode2.png   20,85К   37 Количество загрузок:



#5 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 427
  • Уровень сигнала: 0,14%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 19 Март 2017 - 18:54

Не знаю почему, но мне не удалось установить MineCode.

attachicon.gifMineCode1.png

И после устранения очепятки в 65-ой строке инсталлера...

attachicon.gifMineCode2.png

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



#6 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 19 Март 2017 - 19:35



Не знаю почему, но мне не удалось установить MineCode.

attachicon.gifMineCode1.png

И после устранения очепятки в 65-ой строке инсталлера...

attachicon.gifMineCode2.png

 

Занятно. Саму синтаксическую опечатку исправил, однако причина неверной URL мне не ясна. Только что без каких-либо проблем поставил программку на абсолютно чистую опенось:

 

b8ed012c17ed64a5e9139c1294f58a7e.jpeg

 

Как вариант - на эмуляторе ОС иным образом работает интернет-компонент, иных причин не вижу.



#7 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,88%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 19 Март 2017 - 19:48

Я уже встречал проблему, проблема в эмуляторе, интернет карта почему - то не поддерживает https протокол.

Сейчас изучаю проблему.


Сообщение отредактировал NEO: 19 Март 2017 - 19:54

  • Zer0Galaxy это нравится

#8 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 1 999
  • Уровень сигнала: 171,24%
  • В игре: 1278 час. 43 мин.

Награды

                                               

Отправлено 19 Март 2017 - 20:15

luasocket luassl потому что ставить надо.

 

P. S. на Lua 5.3, кстати, эта штука не работает.


Сообщение отредактировал Fingercomp: 19 Март 2017 - 20:34


#9 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,88%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 19 Март 2017 - 20:32

Оффтоп.

Нашёл самое просто решение, качайте последний билд эмулятора, он рабочий.

http://gamax92.pc-lo...u/OCEmu-x64.zip


  • Zer0Galaxy это нравится

#10 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 20 Март 2017 - 00:31

P. S. на Lua 5.3, кстати, эта штука не работает.

 

И не будет. Суть в том, что для создания прозрачности у меня используется функция блендинга цветовых каналов, впоследствии "упаковывающая" результирующие каналы в один цвет вида 0xRRGGBB. К сожалению, в Lua 5.3 бинарные операции работают исключительно с целыми числами, в то время как библиотека bit32 в Lua 5.2 поддерживает дробные. Пришлось делать выбор между увеличенной втрое скоростью отрисовки или вставкой округляющих операций с возможностью использования Lua 5.3. Я выбрал первое, не жалею.



#11 Оффлайн   jammer312

jammer312
  • Пользователи
  • Сообщений: 62
  • Уровень сигнала: 119,31%
  • В игре: 890 час. 55 мин.

Награды

           

Отправлено 20 Март 2017 - 00:46

У меня не получилось установить оное ингейм, валится на подгрузке иконки. Пока в код не лез, но вот скрин проблемы:

Спойлер

P.s. До меня внезапно дошло, что может не хватать места. Ща вставлю второй хард и попробую снова.

[UPD] Да, именно так, теперь вроде нормально поставилось.


Сообщение отредактировал jammer312: 20 Март 2017 - 01:03


#12 Оффлайн   Kartze

Kartze
  • Пользователи
  • Сообщений: 435
  • Уровень сигнала: 41,03%
  • В игре: 306 час. 24 мин.

Награды

              

Отправлено 20 Март 2017 - 10:39

@ECS, пожалуйста, никогда больше не фастпик :D Юзай imgur, неси всем счастье)


  • Laine_prikol это нравится

#13 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 20 Март 2017 - 11:03

Нашёл самое просто решение, качайте последний билд эмулятора, он рабочий.

http://gamax92.pc-lo...u/OCEmu-x64.zip

Спасибо, загрузилось.

Вот только в этом эмуляторе MineCode зачем то странным образом сжимает экран

Прикрепленный файл  MineCode.png   12,45К   34 Количество загрузок:

и некоторые кнопки становятся недоступны.



#14 Оффлайн   Laine_prikol

Laine_prikol
  • Пользователи
  • Сообщений: 133
  • Уровень сигнала: 0,55%
  • В игре: 4 час. 6 мин.

Награды

           

Отправлено 20 Март 2017 - 11:11

У меня не получилось установить оное ингейм, валится на подгрузке иконки. Пока в код не лез, но вот скрин проблемы:

Спойлер

P.s. До меня внезапно дошло, что может не хватать места. Ща вставлю второй хард и попробую снова.
[UPD] Да, именно так, теперь вроде нормально поставилось.


Почему в OC не сделают адекватную ошибку о том что нет места

#15 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 20 Март 2017 - 11:24

Почему в OC не сделают адекватную ошибку о том что нет места

 

Я думаю это в большей степени задача прикладного программиста, а не системы.



#16 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 20 Март 2017 - 11:46

Почему в OC не сделают адекватную ошибку о том что нет места

 

При попытке открытия файла через io.open выдается либо файловый хендл, либо false с строковой причиной невозможности открытия файла (в нашем случае "not enough space"). Это и есть "адекватная ошибка".

 

Спасибо, загрузилось.

Вот только в этом эмуляторе MineCode зачем то странным образом сжимает экран

attachicon.gifMineCode.png

и некоторые кнопки становятся недоступны.

 

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

 

UPD: Готово, так должно быть удобнее.

 

c5f8828d0af96ffa3df990da8f7545ef.png


Сообщение отредактировал ECS: 20 Март 2017 - 12:40


#17 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 21 Март 2017 - 09:49

Четвертая наиболее полезная функция - это отладчик. Он позволяет вам выставлять так называемые "брейкпоинты" путем нажатия на кнопку "*" и узнавать, какое значение принимает та или иная переменная в исполняемом скрипте:
 Так брекпойнты не брекпойнты вовсе, а просто ерроры :( . А если я хочу после брекпойнта продолжить выполнение?

#18 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 21 Март 2017 - 12:04

Так брекпойнты не брекпойнты вовсе, а просто ерроры  . А если я хочу после брекпойнта продолжить выполнение?

 

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



#19 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 21 Март 2017 - 12:16

У тебя интересно реализовано получение значения переменных из исполняемого кода, хоть и только из одной строки.

Я пытался получать через окружение, но так доступны только глобальные переменные. Может ты знаешь способ достучаться извне к локальным? Может какое то  локальное окружение есть?



#20 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 21 Март 2017 - 14:32

У тебя интересно реализовано получение значения переменных из исполняемого кода, хоть и только из одной строки.

Я пытался получать через окружение, но так доступны только глобальные переменные. Может ты знаешь способ достучаться извне к локальным? Может какое то  локальное окружение есть?

 

Сам с этой проблемой бился, толкового решения так и не нашел. Казалось бы, самый разумный вариант - это использовать функцию debug.getlocal для нужного уровня стека, которая недоступна в моде, либо использовать окружение в качестве аргумента к load, но, как ты и сказал, доступно лишь глобальное. Поэтому и пришлось делать выбор между двумя вариантами: либо выводить в качестве данных брейкпоинта только глобальные переменные, либо парсить выбранную строку. В качестве альтернативы можно разбить весь сырец на слова, исключив из них синтаксические - и отрисовывать жирную таблицу из всех существующих переменных с их значениями, однако загвоздка в том, что в этом случае будет получена куча переменных, которые могут быть вообще не объявлены на момент существования брейкпоинта. В общем, спорно все, спорно, надо думать.



#21 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 23 Март 2017 - 15:35

Небольшая обновка:

  • Добавлена алфавитно-типовая сортировка в файловом древе
  • Улучшено удобство комментирования выделенных участков кода
  • Улучшен алгоритм вывода стека ошибки и подсветки ошибочных строк
  • Добавлена поддержка нескольких брейкпоинтов с возможностью продолжения/остановки выполнения программы

3a3ef9aa69db3ec282c5e6753c1d292e.png


Сообщение отредактировал ECS: 23 Март 2017 - 16:41

  • Totoro, Fingercomp, Sharplook и 2 другим это нравится

#22 Оффлайн   Laine_prikol

Laine_prikol
  • Пользователи
  • Сообщений: 133
  • Уровень сигнала: 0,55%
  • В игре: 4 час. 6 мин.

Награды

           

Отправлено 23 Март 2017 - 18:56

Я думаю это в большей степени задача прикладного программиста, а не системы.

В любой нормальной системе есть оповещение что недостаточно места.


Сообщение отредактировал Laine_prikol: 23 Март 2017 - 18:57


#23 Оффлайн   Seryoga

Seryoga
  • Пользователи
  • Сообщений: 108
  • Уровень сигнала: 0,34%
  • В игре: 2 час. 33 мин.
  • ГородSaint-Petersburg

Награды

        

Отправлено 23 Март 2017 - 23:52

А почему нельзя просто прошить код трассирующими маркерами?
ТО ЕСТЬ возьмём следящий поток и две функции для работы с ним:

  1. mark(*variables)  -- скопировать и отпрвить потоку переменные
  2. wait()                   -- остановка до того пока следящий поток не разрешит продолжить работу

Вставить функцию mark во всех местах где изменяется какая-либо переменная или если есть вероятность изменения переменной
Также трассировать глобальные переменные.
В мастах, где располагаются брейкпоинты вставить wait
И усё


Сообщение отредактировал Seryoga: 23 Март 2017 - 23:58


#24 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 24 Март 2017 - 01:13

А почему нельзя просто прошить код трассирующими маркерами?
ТО ЕСТЬ возьмём следящий поток и две функции для работы с ним:

  1. mark(*variables)  -- скопировать и отпрвить потоку переменные
  2. wait()                   -- остановка до того пока следящий поток не разрешит продолжить работу

Вставить функцию mark во всех местах где изменяется какая-либо переменная или если есть вероятность изменения переменной
Также трассировать глобальные переменные.
В мастах, где располагаются брейкпоинты вставить wait
И усё

 

Здесь уже используется схожая концепция. Такой метод прост и надежен, однако в код добавляются избыточные данные - и если тебе захочется получить значение всех переменных из файлика, скажем, в пару тысяч строк, то и число маркеров будет соответствующим. Поэтому я ограничил просмотр значений переменных строкой текущего брейкпоинта.



#25 Оффлайн   Arseniy10

Arseniy10
  • Пользователи
  • Сообщений: 97
  • Уровень сигнала: 0,14%
  • В игре: 1 час. 3 мин.
  • ГородКаруселин

Награды

     

Отправлено 24 Март 2017 - 23:05

Маты в коде везде есть, даже в тех программах и играх которые сделаны целой компанией - Например исходник Quake 3 в комментариях есть мат

Для ECS чуть ли не традиция.



#26 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 25 Сентябрь 2017 - 20:09

Добавлена не шибко важная фича ресайза файлового древа:

 

XhhyAql.gif


  • Alex, Totoro и vx13 это нравится

#27 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 735
  • Уровень сигнала: 52,61%
  • В игре: 392 час. 51 мин.

Награды

                 

Отправлено 25 Сентябрь 2017 - 20:27

Добавлена не шибко важная фича ресайза файлового древа

 

Спойлер

 

Черт, какой же у тебя крутой результат кода... :)  © Krutoy



#28 Оффлайн   RccHD

RccHD
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 17,37%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 25 Сентябрь 2017 - 21:53

@ECS Как ты сделал смену иконки курсора при ресайзе?


Сообщение отредактировал Alex: 25 Сентябрь 2017 - 23:30
избыточное цитирование(репикчинг)


#29 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 25 Сентябрь 2017 - 22:00

Как ты сделал смену иконки курсора при ресайзе?

 

Там иконка курсора не меняется сама. Просто в том месте, где ты тянешь мышью отрисовывается двусторонняя стрелочка.






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных