|
|
|
Get my IPv4 and save into variable, Получите мой IPv4 и сохраните в переменной |
|
|
neves |
30.9.2020, 23:14
|
Novice
Сообщений: 64
Регистрация: 4.10.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.419
Возраст: 19
|
Is it possible to get the current IPv4 and save it into variable? I was thinking if its possible to do it using exec() function, something like that: Код --lua local my_ip_address = exec([[ipconfig /all]])
, but sadly cannot save the result from exec() into variable.
|
|
|
|
DarkMaster |
2.10.2020, 5:07
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27723
Пользователь №: 11.279
|
Цитата Json делает за нас всю работу и сразу дает value по ключу Для начала его нужно подключать равно, как и пош. Не в обиду, но я сильно не фанат поша. У меня был ряд задач по созданию относительно небольших скриптов и время его старта привело к тому, что были написаны мозговыносящие батники, но зато отрабатывающие за секунду вместо 15. Если, скажем, мне не нужен в работе пош, но мне нужно дернуть ип - я никогда в жизни не буду громоздить это. Цитата Тут же придется парсить ответ вручную. Код local ip = {string.match("Current IP Address: 111.22.33.44","(%d+)%.(%d+)%.(%d+)%.(%d+)")} Это всяко проще и короче подключения вагона либ. Про скорость и накладные ресурсы вообще молчу)
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
neves |
2.10.2020, 17:17
|
Novice
Сообщений: 64
Регистрация: 4.10.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.419
Возраст: 19
|
Цитата(DarkMaster @ 1.10.2020, 21:39) One more option for take real external ip http://checkip.dyndns.com . It give answer in plain text without json. Yes, that's also an option and thanks for the idea, but I think to capture the request response you will need something like curl, wget or luasocket. I modified @cirus answer and used the command nslookup to find the public ipv4. Код --lua log 'clear' log 'mode compact' function my_public_ip() handle = io.popen([[cmd.exe /c nslookup myip.opendns.com resolver1.opendns.com]]) result = handle:read("*a") handle:close() return trim(string.match(result, ".*Address: (.*?-.*)")) end log(my_public_ip())
|
|
|
|
Fors1k |
3.10.2020, 15:43
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2382
Пользователь №: 18.746
|
Что ж, взглянем на сухие факты. Цитата(DarkMaster @ 2.10.2020, 5:07) Цитата Json делает за нас всю работу и сразу дает value по ключу Для начала его нужно подключать Json, как и что-либо другое подключать не надо. В поше сразу все есть. Цитата(DarkMaster @ 2.10.2020, 5:07) были написаны мозговыносящие батники Про CMD/BAT корпорация Microsoft заявляет следующее: PowerShell теперь является стандартной командной оболочкой, которая заменяет CMD.exe. Разработка cmd.exe была остановлена после выхода Windows 2000(20 лет назад).В качестве основной командной оболочки используется PowerShell. Цитата(DarkMaster @ 2.10.2020, 5:07) я никогда в жизни не буду громоздить это. Насчет "громоздить" (IMG: style_emoticons/default/smile.gif) Простая задача. Узнать размер картинки: Lua
Код --lua local ffi = require('ffi') local gdip = ffi.load('Gdiplus.dll') local CP_ACP = 0
ffi.cdef[[ typedef unsigned int UINT; typedef unsigned long DWORD; typedef struct {UINT GdiplusVersion; int DebugEventCallback; bool SuppressBackgroundThread; bool SuppressExternalCodecs;} GdiplusStartupInput, *pGdiplusStartupInput;
int GdiplusStartup(int *token, pGdiplusStartupInput GdiplusStartupInput, int *output); int GdiplusShutdown(int token); int GdipDisposeImage(int image); int GdipLoadImageFromFile(const wchar_t *filename, int *image); int GdipGetImageWidth(int image, UINT *width); int GdipGetImageHeight(int image, UINT *height); int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const char *lpMultiByteStr, int cbMultiByte, wchar_t *lpWideCharStr, int cchWideChar); ]]
function image_size(path) local buf = ffi.new('wchar_t[?]', #path+1) local StartupInput = ffi.new('GdiplusStartupInput', {1, 0, 0, 0}) local token, image, w, h = ffi.new('int[1]'), ffi.new('int[1]'), ffi.new('int[1]'), ffi.new('int[1]') ffi.C.MultiByteToWideChar(CP_ACP, 0, path, #path, buf, ffi.sizeof(buf)) gdip.GdiplusStartup(token, StartupInput, nil) gdip.GdipLoadImageFromFile(buf, image) gdip.GdipGetImageWidth(image[0], w) gdip.GdipGetImageHeight(image[0], h) gdip.GdipDisposeImage(image[0]) gdip.GdiplusShutdown(token[0]) return w[0], h[0] end
log "clear" log "mode compact"
local path = [[C:\image_062.jpg]] -- путь к картинке (возможные форматы: BMP, JPG, TIF, GIF и PNG) local width, height = image_size( path ) log(width, height) -- размеры картинки
38 строк. Для posh это всего лишь одна команда: Код --lua require"luaposh";PScode('return',{[[#} # $image = [Drawing.Image]::FromFile("C:\myImg.jpg") log $image.size; $image.Dispose() # ]]}) Cirus молодец, что умеет писать такое, большой ему респект. Но суть в том, что никто другой здесь такое не напишет. Цитата(DarkMaster @ 2.10.2020, 5:07) Код local ip = {string.match("Current IP Address: 111.22.33.44","(%d+)%.(%d+)%.(%d+)%.(%d+)")} Это всяко проще и короче Это да, только приведенного кода не существует) Код, получающий ip такой: Код --lua function my_public_ip() handle = io.popen([[cmd.exe /c nslookup myip.opendns.com resolver1.opendns.com]]) result = handle:read("*a") handle:close() return trim(string.match(result, ".*Address: (.*?-.*)")) end log(my_public_ip()) LuaPosh: Код --lua require"luaposh" log ( PScode('return',{[[$return = ((iwr -useb freegeoip.app/json).Content|ConvertFrom-Json).ip]]}) ) 7 строк vs 2 строки. "Проще и короче" здесь не наблюдается=) Цитата(DarkMaster @ 2.10.2020, 5:07) Про скорость вообще молчу) Оно и правильно) Код --lua log 'clear';log 'mode compact' require "luaposh" measure = 0 i = 0 repeat -- t = os.clock() myip = PScode('return',{[[$return = ((iwr -useb freegeoip.app/json).Content|ConvertFrom-Json).ip]]}) measure = measure + (os.clock() -t) i = i+1 -- until i == 5 log (myip) log (measure / 5) Результат 0.176Код --lua log 'clear';log 'mode compact' measure = 0 i = 0 repeat -- t = os.clock() function my_public_ip() handle = io.popen([[cmd.exe /c nslookup myip.opendns.com resolver1.opendns.com]]) result = handle:read("*a") handle:close() return trim(string.match(result, ".*Address: (.*?-.*)")) end myip = my_public_ip() measure = measure + (os.clock() -t) i = i+1 -- until i == 5 log (myip) log (measure / 5) Результат 0.409Разница более чем в 2 раза. Цитата(DarkMaster @ 2.10.2020, 5:07) Не в обиду, но я сильно не фанат поша. Не, тут обижаться не на что=) Люди, в большинстве своем, всегда были против прогресса. Пользуются cmd(который 20 лет как мертвый) вместо powershell, слушают музыку в машине на cd вместо аукса или bluetooth, на телефон положить деньги бегают в соседний квартал к терминалу киви, вместо пары кликов в онлайн банке, и т.п. . Когда-то сжигали на костре людей за слова о том, что земля не плоская, и не солнце вращается вокруг неё, а сейчас, например, поджигают вышки 5G. Так было и будет всегда, так что я понимал, что пишу данное решение для очень узкого круга людей. Кстати, в процессе работы над этим проектом, оказалось что в их числе и cirus. Он, который может решить практически люблю задачу на lua в таких ограниченных возможностях этого языка, в этом вопросе оказался отнюдь не старовером, и весьма заинтересованно принимал участие в создании LuaPosh, за что ему большое спасибо. Сообщение отредактировал Fors1k - 3.10.2020, 16:18
--------------------
Для связи
|
|
|
|
Cockney |
3.10.2020, 17:12
|
Master
Сообщений: 1.395
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 21062
Пользователь №: 16.156
|
Цитата(Fors1k @ 3.10.2020, 15:43)
Люди, в большинстве своем, всегда были против прогресса. Пользуются cmd(который 20 лет как мертвый) вместо powershell, слушают музыку в машине на cd вместо аукса или bluetooth, на телефон положить деньги бегают в соседний квартал к терминалу киви, вместо пары кликов в онлайн банке, и т.п. . Когда-то сжигали на костре людей за слова о том, что земля не плоская, и не солнце вращается вокруг неё, а сейчас, например, поджигают вышки 5G.
Так было и будет всегда, так что я понимал, что пишу данное решение для очень узкого круга людей. Кстати, в процессе работы над этим проектом, оказалось что в их числе и cirus. Он, который может решить практически люблю задачу на lua в таких ограниченных возможностях этого языка, в этом вопросе оказался отнюдь не старовером, и весьма заинтересованно принимал участие в создании LuaPosh, за что ему большое спасибо.
А как понять, что это прям прогресс, а не сиюминутное течение ? Конечно, примеры про cd и онлайн банки хороши, но если касаться мира АйТи: куча решений уже существует, и написаны они как раз лет 20-30 назад. Т.е. с приходом прогресса это нужно все перелопатить чтобы было не 100, а 10 строк ? А зачем, если работает ? Java - 25 лет, C - > 50 лет. Не кажется ли странным, что они сейчас в топе по востребованности в том числе и на новые проекты ? Во всем мире, а не где-то там, в абстрактной стране. Есть же удобнее, быстрее, красивее.....а на их стороне просто вагон опыта и best practices, которые все недостатки перекрывают. Так и тут. На да, луа очень ограничен, куда ему до powershell, хех.
|
|
|
|
neves |
3.10.2020, 17:51
|
Novice
Сообщений: 64
Регистрация: 4.10.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.419
Возраст: 19
|
Fors1k me personally thinks that posh in some cases is very useful and powerful. In this case I actually need to check the IP only once in the beginning of the script. So I don't really think I have to import the luaposh in my script for only one check. However, I am grateful to you for giving me an alternative solution using luaposh. About the speed comparison you made: The solution I provided isn't actually written to be fast because as I said it will be executed only once in the beginning of the script. Anyways I tried your code which shows the speed of my solution: Цитата(Fors1k @ 3.10.2020, 15:43) Код --lua log 'clear';log 'mode compact' measure = 0 i = 0 repeat -- t = os.clock() function my_public_ip() handle = io.popen([[cmd.exe /c nslookup myip.opendns.com resolver1.opendns.com]]) result = handle:read("*a") handle:close() return trim(string.match(result, ".*Address: (.*?-.*)")) end myip = my_public_ip() measure = measure + (os.clock() -t) i = i+1 -- until i == 5 log (myip) log (measure / 5) In my case the result was: 0.13020000000006I haven't tried the posh solution speed yet.
|
|
|
|
DarkMaster |
3.10.2020, 18:20
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27723
Пользователь №: 11.279
|
Цитата Json, как и что-либо другое подключать не надо. В поше сразу все есть. А пош подключать не надо?) Гайка не нужна, мы камаз покупаем - там уже будет. Цитата Про CMD/BAT корпорация Microsoft заявляет следующее: PowerShell теперь является стандартной командной оболочкой, которая заменяет CMD.exe. Макйрософт может заявлть, что угодно. Я буду пользоваться тем, что мне удобно и тем, что подходит для моих нужд. Я могу заявить, что стандартным теперь будет надевать трусы поверх штанов. Как думаешь, майкрософт так будет ходить на работу? Цитата Простая задача. Узнать размер картинки: Я с джепегом не возился - не надо было. Картинки бмпшные рисовал скриптами, сохранял, загружал. Даже если писать с нуля - десяток строк от силы. Есть спец либы для работы с графикой, если нужно что-то хитрое. Весят меньше, шуршат быстрее, функционал больше. Цитата Это да, только приведенного кода не существует) Учитывая, что я не видел, что уже подключено, не знал каков функционал, ограничения и т.д. - код не был написан. Это вполне логично. Как правильно заметил топикстартер вариантов получения много: curl, wget, luasocket, socket2(который пишется в виде чистого биндинга в данный момент). Что уже прикручено к проекту, то и нужно использовать. А перечисленные выше варианты вершина айсберга. Лично у меня luasocket подключается в стандартной шапке. Цитата Результат 0.176 Ой а чего это require вне таймера? Лично у меня пош стартует около 15 секунд. Мне оно не надо. При этом хочу заметить, у меня, как и большинства пользователей пош не является постоянно используемым инструментом из-за чего за его обновлением зачастую не следят, а уж в предвыборке в опертивке он не висит тем более, что очень сильно сказывается на времени запуска. Цитата Пользуются cmd(который 20 лет как мертвый) Ну не 20. По крайней мере до XP его не было, а там появился не сразу или калеченный сначала был уж не помню, но суть в том, что его надо было апдейтить. Хотя лично мое мнение cmd устарел и был трупом еще в момент релиза, если не в момент разработки. Убогий функционал, убогий синтаксис, убогая скорость выполнения, но он работает и везде. Пош с совместимостью версий и апдейтов уже доставал меня не один раз. Надо запустить скрипт и вместо запуска скрипта начинаешь качать его апдейты. Оно мне надо? А человек которому я скрипты передавать буду оно надо? А если скрипт для 5 человек? 10? 100? Даже если каждый пятый будет иметь проблемы с совместимость версий - это мне нужно будет в ручном режиме 20 людям объяснить, что им нужно уставить апдейты, уговрить это сделать, выслушать вагон дерьма, что им приходится какой-то херней заниматься и устанавливать им не нужный камаз в системе. Зачем не этим заниматься? С батниками таких проблем нет. Лично я впоследнее время все чаще использую луа, как оболочку вместо cmd. Да, нет конвееров, все несколько через ж, но функционал полноценен, все полностью портабл. Цитата Люди, в большинстве своем, всегда были против прогресса. Именно поэтому я годами пинал кнайта и обсуждал с ним, как прикрутить луа, как это позиционировать и т.д. Деградируем - теперь луа. Цитата на телефон положить деньги бегают в соседний квартал к терминалу киви, вместо пары кликов в онлайн банке, и т.п. . Ну куда мне до продвинутых. Я вот не люблю бегать по приставам судебным которые в пятый раз ой случайно бабки списали за несуществующие либо оплаченные штрафы, суды обжалования, прокуротура, следственный коммитет. Ну да, я для себя решил, что мне проще пройти 100 метров и кинуть денег на телефон, чем годами судиться и добиваться уголовок. Хотя опыт интересный, в целом знание права существенно возросло и посылать с незаконными требованиями стало проще. Цитата lua в таких ограниченных возможностях этого языка Что?))) lua - это среда предназначенная для объединения либ, в случае с luajit это еще и шикарный инструмент для написания биндингов и использования стандартных системных библиотек и сторонних библиотек без каких либо модификаций. Возможности языка исчерпывающие в рамках его назначения - все остальное либы. Есть целые движки игровые которые по сути живут на луа с подключенным набором либ. Зайди на luapower.com и посмотри сколько и чего там существует. Причем огромная доля является кроссплатформенной. Исключение составляют только очень специфические биндинги типа winapi.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Fors1k |
7.10.2020, 0:43
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2382
Пользователь №: 18.746
|
Цитата(Cockney @ 3.10.2020, 17:12) А как понять, что это прям прогресс
Непонятен вопрос. Тот же пример, что бы далеко не ходить. Раньше, если нужно было получить разрешение картинки, можно было либо забить на это, либо просить cirus написать километр кода для этого. Теперь делаешь это одной командой в любом месте своего скрипта. Появился инструмент, который открывает новые возможности, и экономит кучу времени и сил. Не знаю как еще описать значение слова "прогресс" (IMG: style_emoticons/default/smile.gif) Цитата(Cockney @ 3.10.2020, 17:12) куча решений уже существует. Про то и говорю. Есть готовое решение, выполняемое одной командой "дай разрешение картинки". В луа же подобное нужно изобретать с нуля. Есть готовое решение, выполняемое одной командой "дай информацию о процессе". В луа же подобное нужно изобретать с нуля. И т.д. . Или это и был аргумент за posh, а я не понял? Цитата(Cockney @ 3.10.2020, 17:12) Т.е. с приходом прогресса это нужно все перелопатить чтобы было не 100, а 10 строк ? А зачем, если работает ? 1. Обсуждаемая здесь задача - новая. Еще ничего не работает. Перелопачивать здесь нечего. 2. Если ты не конкретно про эту задачу, то : Цитата(Fors1k @ 23.3.2020, 18:20) Можно писать одновременно как на lua, так и на PoSh внутри одного скрипта.
Код --lua require"luaposh" --50 --строк --кода --тут понадобилось узнать ip myIp = PScode('return',{[[$return = ((iwr -useb freegeoip.app/json).Content|ConvertFrom-Json).ip]]}) --50 --строк --кода Что тут перелопачивать? В любое место воткнул понадобившийся код, и забыл. Специально же такую возможность отметил отдельно. Да и подчеркнул даже.. Цитата(Cockney @ 3.10.2020, 17:12) На да, луа очень ограничен, куда ему до powershell, хех.
Не очень хочу залезать в дебри "это круче..нет это круче". Lua - это непременно прорыв относительно языка пилота, и опять же напомню, что одно другого не исключает. Именно благодаря lua получилось создать luaPosh. На пилоте я бы в жизни это не осилил (даже представить страшно (IMG: style_emoticons/default/biggrin.gif) ). Если просто в целях дополнительного знакомства с возможностями powershell, возьму первое, что приходит в голову из недавнего. Незамысловатые задачи: 1. Получить разрешение картинки. 2. Скачать файл из интернета. 3. Узнать сколько времени работает процесс. 4. Узнать о том, что программа запустилась(появилось рабочее окно). Luaposh: 1. Решается одной командой (код уже был выше).
2. Решается одной командойКод --lua require"luaposh";PScode('void',{[[#} # iwr https://forum.uokit.com/style_avatars/IPB_Community_Pack/Orange-sticks.gif -OutFile C:\test.gif # ]]}) 3. Тоже одна строкаКод --lua require"luaposh";PScode('return',{[[#} # log ( (date) - (Get-Process -id 30896).StartTime ) # ]]}) 4. Две строкиКод --lua require'luaposh';PScode('return',{[[#} # $process = Start-Process notepad.exe -PassThru while($process.MainWindowHandle -eq 0){log ("Waiting")} # ]]}) Здесь $process - это объект запущенного процесса. Во второй строке мы ожидаем пока хэндл его окна перестанет быть равным нулю. Lua: 1. Такой команды нет. Решение: 38 строк кода
Код --lua local ffi = require('ffi') local gdip = ffi.load('Gdiplus.dll') local CP_ACP = 0
ffi.cdef[[ typedef unsigned int UINT; typedef unsigned long DWORD; typedef struct {UINT GdiplusVersion; int DebugEventCallback; bool SuppressBackgroundThread; bool SuppressExternalCodecs;} GdiplusStartupInput, *pGdiplusStartupInput;
int GdiplusStartup(int *token, pGdiplusStartupInput GdiplusStartupInput, int *output); int GdiplusShutdown(int token); int GdipDisposeImage(int image); int GdipLoadImageFromFile(const wchar_t *filename, int *image); int GdipGetImageWidth(int image, UINT *width); int GdipGetImageHeight(int image, UINT *height); int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const char *lpMultiByteStr, int cbMultiByte, wchar_t *lpWideCharStr, int cchWideChar); ]]
function image_size(path) local buf = ffi.new('wchar_t[?]', #path+1) local StartupInput = ffi.new('GdiplusStartupInput', {1, 0, 0, 0}) local token, image, w, h = ffi.new('int[1]'), ffi.new('int[1]'), ffi.new('int[1]'), ffi.new('int[1]') ffi.C.MultiByteToWideChar(CP_ACP, 0, path, #path, buf, ffi.sizeof(buf)) gdip.GdiplusStartup(token, StartupInput, nil) gdip.GdipLoadImageFromFile(buf, image) gdip.GdipGetImageWidth(image[0], w) gdip.GdipGetImageHeight(image[0], h) gdip.GdipDisposeImage(image[0]) gdip.GdiplusShutdown(token[0]) return w[0], h[0] end
log "clear" log "mode compact"
local path = [[C:\image_062.jpg]] -- путь к картинке (возможные форматы: BMP, JPG, TIF, GIF и PNG) local width, height = image_size( path ) log(width, height) -- размеры картинки
2. Такой команды нет. Решение: нужно искать, качать и подключать вспомогательный архив из интернета. 3. Такой команды нет. Решение: 37 строк кода
Код --lua local PROCESS_ALL_ACCESS = 2097151 local ffi = require("ffi") local user, kernel = ffi.load('User32'), ffi.load('Kernel32') ffi.cdef[[ typedef unsigned short WORD; typedef unsigned long DWORD; typedef DWORD *LPDWORD; typedef struct _FILETIME {DWORD dwLowDateTime; DWORD dwHighDateTime;} FILETIME, *PFILETIME, *LPFILETIME; typedef struct _SYSTEMTIME {WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds;} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; bool CloseHandle(int hObject); int OpenProcess(DWORD dwDesiredAccess, bool bInheritHandle, DWORD dwProcessId); bool GetProcessTimes(int hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); DWORD GetWindowThreadProcessId(int hWnd, LPDWORD lpdwProcessId); bool FileTimeToSystemTime(const FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime); bool FileTimeToLocalFileTime(const FILETIME *lpFileTime, LPFILETIME lpLocalFileTime); ]] local ft, ft2, ft3, ft4, st = ffi.new('FILETIME'), ffi.new('FILETIME'), ffi.new('FILETIME'), ffi.new('FILETIME'), ffi.new('SYSTEMTIME') local PID = ffi.new('unsigned long[1]')
function GetProcessTime(handle) if handle == 0 then return 0 end user.GetWindowThreadProcessId(handle, PID) local process = kernel.OpenProcess(PROCESS_ALL_ACCESS, 1, PID[0]) if process > 0 then kernel.GetProcessTimes(process, ft, ft2, ft3, ft4) kernel.FileTimeToLocalFileTime(ft, ft); kernel.FileTimeToSystemTime(ft, st); local datetime = { year = st.wYear, month = st.wMonth, day = st.wDay, hour = st.wHour, min = st.wMinute, sec = st.wSecond} kernel.CloseHandle(process); return os.time() - os.time(datetime) end return -1 end log 'clear' log 'mode compact' local t = GetProcessTime(workwindow()) -- function call log (tostring(t) .. ' seconds') 4. Решается через костыль. Естественно, если окно с таким заголовком уже существует, то код не сработает.
Код --lua exec ("notepad.exe")
handle = nil while handle == nil do handle = findwindow("Блокнот") log("Waiting") wait(100) end Цитата(DarkMaster @ 3.10.2020, 18:20) Макйрософт может заявлть, что угодно. Я буду пользоваться тем, что мне удобно и тем, что подходит для моих нужд. Я могу заявить, что стандартным теперь будет надевать трусы поверх штанов. Как думаешь, майкрософт так будет ходить на работу?
Пытаться комментировать это не стану))) Цитата(DarkMaster @ 3.10.2020, 18:20) Лично у меня пош стартует около 15 секунд. Пош с совместимостью версий и апдейтов уже доставал меня не один раз. Надо запустить скрипт и вместо запуска скрипта начинаешь качать его апдейты. Если с компом такие проблемы, то может проще отнести его в ремонт, или переустановить ос, чем так мучаться? У меня на железе 2008 года и какой-то старой win10 он стартует за 2 сек. Так как Цитата(Fors1k @ 3.10.2020, 15:43)
естественно никаких обновлений ни разу не требовалось. Есть новые версии powershell core, которые нужно устанавливать отдельно. Естественно на них я разработку не веду. Только на встроенной версии. Короче, так спорить бесконечно можно) Вполне возможно и луа умеет что-то, что не умеет powershell. Но спор не имеет смысла, так как использование одного не исключает другого (IMG: style_emoticons/default/wink.gif)
--------------------
Для связи
|
|
|
|
DarkMaster |
7.10.2020, 1:38
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27723
Пользователь №: 11.279
|
Цитата Тот же пример, что бы далеко не ходить. Раньше, если нужно было получить разрешение картинки, можно было либо забить на это, либо просить cirus написать километр кода для этого. Теперь делаешь это одной командой в любом месте своего скрипта. Либо подключить спец либу которая жрет меньше памяти и грузится мгновенно. Цитата В луа же подобное нужно изобретать с нуля. С какого перепугу? Подключай либы. Цитата Если с компом такие проблемы, то может проще отнести его в ремонт, или переустановить ос, чем так мучаться? У меня на железе 2008 года и какой-то старой win10 он стартует за 2 сек. Читай про предвыборки. Тот факт, что ты его постоянно используешь - увеличивает скорость его загрузки, а иногда и работы. Еще до того, как ты его попытаешься стартануть оно уже в оперативке, а возможно и файлы к которым ты будешь обращаться в ходе работы скрипта. Цитата естественно никаких обновлений ни разу не требовалось. До SP1 его не было в XP насколько я помню. Могу ошибаться давно дело было. Цитата PowerShell теперь является стандартной командной оболочкой. Стандартной ее объявил майкрософт. Дела мне до него мало, если честно. Не более чем дополнительно взвешанные решения в пользу портабл оболочек. Цитата естественно никаких обновлений ни разу не требовалось. Есть новые версии powershell core, которые нужно устанавливать отдельно. Естественно на них я разработку не веду. Только на встроенной версии. Я тебе еще раз говорю. Это были реальные ситуации. Неоднократные. Для запуска скриптов поша приходилось накатывать апдейты поша на машины. На самом деле я понимаю, что ты не прочувствуешь всей проблемности этих апдейтов поскольку у тебя повидимому нет большого количества людей которым ты бы поставлял эти скрипты. Поверь, когда зоопарк пользователей завалит тебя вопросами "какого хрена оно не работает". Оно будет даже не так страшно, если это контора какая-нибудь и ты можешь отправить мальчиков накатить апдейты или тупо по удаленке налить. Самое веселое когда это толпа людей из разных городов у которых свои собственные компы и они сами себе админы (могут и нахер послать особо не рассуждая). Вот так начинается забавно. И вот тогда ты поймешь надо тебе это или нет. Лично я без домена и тонких клиентов подобными граблями заниматься больше не буду. Мое время стоит денег и когда я теряю доход, зато у меня все современненько, сдается вопрос на кой черт? У каждого инструмента свое назначение. В общем случае пош не нужен лично мне. Использовать же его, как редактор картинок... нет ну правда? Цитата 1. Такой команды нет. 2. Такой команды нет. 3. Такой команды нет. Мне просто интересно ты на C/C++ скажешь тоже самое? У них тоже нет и тоже нужно подключать либы/заголовки)
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|