lokin135
-
Публикации
58 -
Зарегистрирован
-
Посещение
-
Победитель дней
4
Сообщения, опубликованные пользователем lokin135
-
-
много полезных программТам мои прожки валяются, но далеко не все)
Основную массу стоит переписать - кол-во говнокода многовато относительно последних прог))
-
В сетевых технологиях я конечно нуб, по этому могу совсем чутка дать конструктивной критики:
1. В некоторых местах нужно использовать Логические выражения. (51 строка)
2. Почему переменные для настройки не локальные?
3. Я бы сделал отдельные функции "init" и "main", а не вызывал функции где попало.
4. Ну и обработка ошибок тоже сделана не в лучшем виде. Я бы предпочел занести все ошибки в массив, пробегался по ошибкам через for и предпринимал действия исходя от порядкового номера ошибки. (Хотя... думаю есть способ лучше)
-
Хелло computercraft! Хочу поделится своей программой по мониторингу состояния 54 (максимум) реакторов (6 блоков по 9 реакторов), которую меня попросили закодить. Вот как все это выгдядит (немного промахнулся с разрешением, по этому по краям не симметрично, но вроде не так сильно в глаза бросается):

Цвет напряжения который выдает реактор и текст "Реактор №1" выделяется красным или зеленым, в зависимости от состояния активности: если реактор выдает 1 и больше EU/t (другими словами - он работает) - цвет зеленый, в противном случае - красный. Так-же в другом углу окна отображается нагрев: если он больше 50% - цвет текста становится оранжевым, но если менее - зеленый.
Стоит сказать, что вся программа работает без дополнительных библиотек (я имею в виду библиотеку от ECS, например. т.е. сторонние), т.к. я ну прям очень не люблю таскать с собой не нужный хлам. Да и еще нужен будет установщик для всего этого. Обошелся только тремя requir'ами: component, term и event.
Так-же я сделал отдельный массив для удобного редактирования цветов:

ИМХО это лучший вариант для хранения цветов программы.
(Дал название переменной color для более логичного кода: "color.UpBar" лучше выглядит чем "colors.UpBar". Но опять-же, ИМХО)
С этой штукой будет не проблема сделать графику программы под цвет стены, например. Да и я не дизайнер или художник, что-бы идеально подбирать цвета))
Теперь счет настройки программы. Для коннекта реактора нужно поставить вплотную адаптер к нему и ввести 3 (можно больше или меньше, но мне по душе именно так) первых символа адреса адаптера (нужно тыкнуть по нему анализатором, что-бы узнать полный адрес) в спец. массив с этими адресами. Можно было-бы автоматически распределять реакторы по блокам, но заказчику нужно было индексировать самому.
Ну, вроде все рассказал. В коде (и в сообщении, ага) могут быть грамматические (не давно узнал, что английское слово "адрес" пишется как "address", а не "adress"... я раньше постоянно так писал и допускал ошибку), так и логические ошибки (имею в виду бесполезную проверку на nil, например). Помидорами не кидайтесь, но советами и конструктивной критики я буду очень рад.
Ну и код выложил на свой сервак и на пастебин:
https://lokin135server.ru/PublicRepository/ReactorStatusAndMFSU/ReactorStatus.lua
Команда для загрузки: pastebin get JUKJXK97 MonitReactors.lua
На основе этой проги я еще сделал рендеринг состояния MFSU'шек, но эта совсем другая история.. (код там-же найдете)
-
7
-
-
где отступыЫыЫыЫОткрою секрет... Товарищ BlackBurn кодит прямо на сайте пастебина
(уже было сказано, что нужно кодить в ST3) -
Много *лишнего*Дану, чем ближе к реальному OC - тем лучше.
-
отсутствие желания платитьСлушай... а как на счет белых IP? У тебя он ванишом стиран? Мой провайдер говнюГ, у роутера и конечного пользователя (меня) апишки не совпадают, и по этому мне открыть сервачек на прямую, так скажем, никак((((((((((
-
автор уже больше года не появлялся на форуме.все-же другим новичкам будет полезно.
-
1
-
-
Делается это так:computer = computer or require"computer"component = component or require"component"Не совсем с тобой согласен (зачем так?!)
Да, все через pcall() делать совсем убого, но подключать библиотеки Я считаю нужно вот так:
local computer = require("computer")Хоть программа может быть и в дроне, но local никогда не крашила проги

-
Ну что-ж, все мы с чего-то начинали. Давай я тебе подскажу твои ошибки:
1. Объявляй локальные переменные и давай им четкие названия:
c = require'component' gpu = require'component'.gpu -> local comp = require("component") local gpu = comp.gpu2. Используй локальные функции. При программировании больших программ (я например: 200+ строк) это очень сильно поможет:
local function Draw() gpu.setBackground(0xFFFF00) gpu.fill(1,1,24,5," ") gpu.setBackground(0xBDBDBD) gpu.set(5,3," ") gpu.setForeground(0xFFFF00) gpu.set(5,3,"Проведите карту.") end
3.Используй отступления (пример не очень, т.к. лучше использовать логические выражения. кто-то писал на форуме):
... if type == "magData" then h = 1 else h = 0 end ... -> if type == "magData" then h = 1 else h = 0 end
Ну и на последок: лучше избегать бесконечные циклы. Так-же лучше выносить в отдельную переменную числа, строки и т.п. (в данной программе, пароль, т.е. string) в начало кода программы, что-бы конечному пользователю было проще ее настроить.
-
не актуально, вот полу-рабочий вариант (часы/минуты подкоректировать нужно) https://pastebin.com/vCihbKm1
-
1
-
-
-
нашел api_post.php. не понял что за что отвечает. (разжуй мне и подай на блюдце)
-
ого а там даже комменты есть

-
Ребята, нужна помощь с заливкой логов на pastebin. можно просто отрывок кода-примера заливки файла (лог-файл) на определенный ID. Возился с internet API, но ничего не получилось, т.к. с всякими HTTP протоколами и прочим никогда не возился. А вообще можно реализовать вышеописанное?
-
-
такое чувство, что ты не знаешь что нужно компоненты подключать...
require('component').redstone.setOutput(2,15)а не
rs.setOutputили же:
local com = require('component') local rs = com.redstone rs.setOutput(2,15) -
Прикольно получилось. Графонистая такая, все на высшим уровне) но чет мне не зашло. Лично мне, проще написать код в Sublim'е, чем разбираться в детской 'поигрульке'. Хотя для новичков - будет полезно. Win10 64-bit, java: Version 8, Update 111. - робит.
-
ВОТ! где ты был когда я на дне электросети был?
угарнулАвтор не отвечает за психические и физические (потеря сознания, кровотечение из глаз, конвульсии, панические атаки, депрессию, разочарование в человечестве), а также игровые увечья и случаи летального исхода, вызванные данным гайдом
-
1
-
-
-
Вообще как бы данный раздел должен спокойно принимать и переваривать любые программки и попытки написать что-то. Игроки же не все программисты. БОльшая часть же просто играется в майн и в мод ОС. А какой-то свой "хелоуВорлд" должен попробовать написать каждый и попробовать что-то сделать самому. Ну и критику принять по делу. Иначе где, как не на форуме новичок узнает, что он делает что-то не так. Он так и будет до конца жизни думать, что написал супер либу для какого-то серверного и клиентского ПО=)
Так что тут никаких непоняток и насмешек или обид не должно и даже быть, или страха у новичков выложить свое творение на форум.
@@lokin135, так что не переживай, главное - прими во внимание то, что написали скилловые программисты нашего форума тебе и в дальнейшем учитывай свои ошибки. И все будет нормально

хорошо, спасибо.
-
После всех этих подробных комментариев получилась годная тема о том, какое творчество не будет принято на форуме. Я бы сохранил для потомков.
понял
-
1
-
-
Спасибо вам друзья! все, понял. Многое исправил. Но что сделать мне с этим постом-то? или Администраторы сами эту бяку удалят?
-
Все-же, я выложил сюда потомучто все "это", как я считаю, нужно доработать. Хотя стоило в раздел библеотек выкладывать... ну даладно)
-
Привет тебе! Сейчас, я расскажу о своей библиотеки SC. Переводя - SecurityControl.
Эта небольшая библиотека (
но довольно гибкая) позволяет написать свою программу для сервера, а так-же для конечного пользователя.Сразу скажу - все сообщения проходят через сериализацию. Ну а теперь, давайте я расскажу ее API:SecurityControl.OpenPort():randomport
Проверяет если-ли модем, да - открывает рандомный порт и возвращает его.
SecurityControl.ReturnMess(Time):messege or "no"
Ждет сообщения. В качестве аргумента нужно использовать цифру. Она определяет сколько нужно ждать ответа. Если всё-же ответа нет, возвращает "no" (без кавычек), а если ответ есть - вернет его
SecurityControl.SendPort(Port,Messeger)
Отправляет Сообщение. Так-же проверяет если модем.
Вот и все. да, 3 функции...
Ну да ладно.Хорошо, теперь о том, что я умудрился написать:
http://pastebin.com/1sJk9frj - пример небольшого сервера.
команды которые он принимает:
/print <сообщение>
просто выводит сообщение на экран сервера.
/2send <порт>
запоминает порт которому нужно обращаться.
/help
выводит список команд на экране клиента. необходим порт клиента.
http://pastebin.com/edit/TVme8BTt - клиент для этого сервера. но он более-менее
универсален.о нем думаю рассказывать нечего, т.к. он всего-то на 12 строчек (
)есть удобный установщик, но есть 2 проблемы: он графический, и поддерживает 2 и 3-тию видюху и ставит мою библиотеку "simple gpu" о которой врядле буду рассказывать.
вот он: http://pastebin.com/J7KHE1Zd
или пиши в shell это (для новичков):
pastebin run J7KHE1Zd
а вот сама либа: http://pastebin.com/GCHSjkcR
на этом вроде все, спасибо что посмотрел мой постик! (мой первый, критикуйте)
заранее извиняюсь за нехороший код
. кодил "это" давно, не на Sublime, и все как лепешка, не разборчиво...
а скринов не будет, там и скринить нечего :P

Вывод графика энергии на монитор
в Инфраструктура
Опубликовано: · Изменено пользователем lokin135
Снова привет! Когда-то давным-давно увидел я дома у Fingercomp'a очень интересную хреновину на мониторе, которая показывала расход/прирост энергии в системе. И вот тогда я захотел накодить нечто подобное. НО! Был я тогда еще тем говнокодером, по этому подобное я не мог сделать. Но время шло, учился кодить и вдруг внезапно вспомнил я о той штуке. Закодил, поставил и забыл. Но вот еще время прошло!
И снова смотрев на свою папочку с программами наткнулся на свой теперешний говнокод. Ну и переписал с новыми фичами (в виде поддержки полупиксилов, что принесло более красивый вид и точность графика) и адекватным кодом (хотя в некоторых моментах я все-же не знал как лучше поступить, и возможно сделал не совсем правильно) :
График показывает процент энергии от объема, выделяя цветом разницу доступной энергии прошлой точки графика:
Пройдемся по настройкам:
Цвета настраиваются ровно так-же, как и в прошлой проги.
Первые переменные ResX и ResY - разрешение экрана. Можно спокойно настраивать, но только отключив бар сверху.
TimeSleep - время ожидания после прорисовки столбца. В общем скорость движения графика.
BarY и lastX лучше не трогать)
drawBar - отвечает за отображение графика сверху.
nameComponent - а вот эта переменная позволяет подключить не только MFSU'шки (да-да, можно подключить хоть 60 их к серверу), но и другие энергохранилища из IC2.
Ссылочки на программу:
https://lokin135server.ru/PublicRepository/mfsuDrawerEU/mfsu4M.lua (да да, я так и не разобрался с кодировкой)
pastebin get XygafBBK
Прошлые версии можете глянуть на сервере, но сразу предупреждаю:
вы можете получить психическую травму от моего старого кода лучше не смотрите :PЖду конструктивной критики. Не, ну идеального кода не бывает, верно?