+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
c:\Program Files (x86)\Lua\5.1>lua.exe c:\temp\1.lua
0.0012512588885159
c:\Program Files (x86)\Lua\5.1>lua.exe c:\temp\1.lua
0.0012512588885159
c:\Program Files (x86)\Lua\5.1>lua.exe c:\temp\1.lua
0.0012512588885159
c:\Program Files (x86)\Lua\5.1>lua.exe c:\temp\1.lua
0.0012512588885159
c:\Program Files (x86)\Lua\5.1>type c:\temp\1.lua
print(math.random() )
Луа под виндой как-то отчаянно сосет хуй не умея настоящие random из Windows Crypto API.
В результате вызов 150 раз программы дает один и тот же random. Его конечно можно math.randomseed(os.time()), но то так, бо time это даже не милисекунды а сеунды.
Забавно что под никсами все зробит как треьба
:1$ lua51 1.lua
0.31260803123592
:2$ lua51 1.lua
0.13656691980388
:3$ lua51 1.lua
0.56430453367732
думаю оно читает /dev/random
Золотой хуй, что это такое? Или Сёма прав и прыщелуа не умеет в winapi?
Запостил:
roskomgovno,
04 Июля 2018
Сам я с апи не работал, но попробуй через экзикуцию, os.execute(каманда в теминале)
Кстати, lua пока что мне нравится: куда меньше мутных углов чем даже в питоне. Мне кажется идеальный язык для обучения азазазам программированя
Zerobrain studio, можно юзать geany
У винды это дикий анус, хз куда ставит луарокс библы, хз где ищет интерплитатор либы и тд.
Да, Zerobrane забавная, мне понравилась
Почему я могу
?
!
package.cpath = package.cpath.."путь к папке с библами"
require("lib.dll");
У Линукса просто все хорошо с библами и ы одной папке лежат, а у винды хаос длл. По этому возможно из-за этого
Решение с вызовом через ":" тоже офигенное потому что позволяет одну и ту же функцию использовать и как метод и просто как функцию. В джаве так нельзя.
Единственное чего я пока не понял это волшебную силу скобочек при возвращении множества значений из функции
еще пример
тут просто ты в принте присваиваешь в одно значение, и из ретурна соотвественно берется 1 первое значение.
То есть скобками ты ограничил область в 1 переменную.
Блжать банально.
local x,y = (pitux())
print(x,y) --1, nil
Так и не понял чоита? Это та фича когда неопределнно возникает локаль self?
или так
особенно это удобно когда делаешь около ООП
С таблицой тоже так можно
"petux":gsub("x","")?
Насколько я понимаю философию Луа, из коробки в ней ровно то, что можно запилить средствами СТАНДАРТНОЙ сишной либы.
Если сишный rand() на винде говно, значит, в луа он тоже говно.
Если в столь любимой тобой либе сишки нет возможности просмотреть каталог, луа этого тоже из коробки не умеет.
Ах да, вот же.
math.random ([m [, n]])
This function is an interface to the simple pseudo-random generator function rand provided by ANSI C. (No guarantees can be given for its statistical properties.)
да, я это уже понял. Потому она и переносима, что ничего кроме ANSI C там нет.
>>Если сишный rand() на винде говно, значит, в луа он тоже говно.
Внезапно оказалось что rand() на linux ведет себя точно так же, если ему не сделать srand.
Пример выше взят из openbsd: тамошние параноики реализовали rand так, что он дейтсвительно возвращает разные (хотя и псевдослучайные) значения. А на винде и линуксе надо делать srand().
Я обосрался, извините.
>>Если в столь любимой тобой либе сишки нет возможности просмотреть каталог
Ты мне так и не ответил, кстати: как посмотреть каталог в стандартной библиотеке любимого всеми современными программистами JavaScript?
Плюю тебе прямо в харю - тьфу!..
Конечно же ты стертор.
p.s. руки так и чешутся, заколдовать тебя в свинью или старую жабу.
Ага, например ты. Пруфы, покажи нам пруфы!!!
Пороль от этой: 123465
(сам забыл как правильно пишеться, копировал от сюда и долгое время понять не мог почему не заходит)
Прости, ты случайно эмм.. не на PHP пишешь?
Луа для того чтобы встраиваться в системы и быть plumbing code (aka "программирование-в-малом"): он чтобы легко и просто двигать сложные, написанные на сях объекты и вызывать функции. Чтобы скриптоваться внутри, короче.
В отличие от, например, Python, который сделан чтобы ты мог кросс-платформенно легко и просто писать.
Потому у питона есть свои абстракции (ну там например asyncio, которое на каждой ОС реализовано по разному) а в lua такого нет, потому что у lua нет задачи чтобы ты писал один код который везде бы работал макисмально производительно.
Зато lua можно скомпилировать подо что угодно, хоть под OpenVMS, хоть под DOS. Где есть ANSI C -- там есть lua (ну кроме import разишто), а Python придется долго и сложно портировать.
луа умеет хвостовую рекурсию.
MRI обосрамшись
CPython обосрамшись
Ожидаемо обгадился node.js
И только lua вертит этот код уже битый час
азахаха
Так нахуя его учить?..
Под винду на VB писать сложнее потому что он копилица в PCode и требуе рантайма для запуску
Но на VBS вполне могли написать говно для IE (хотя VBScript не совсем basic, вкак и VB).
Наконец, на VBA (тот же VB но внутри офиса) могли написать довольно много говна
Нет. Нужно ставить "Visual Basic 6.0: Run-Time Redistribution Pack" ну или бандлить его.
Кроме того если ты собираешься встраивать свой вирь в .exe файл то довольно очевидно что он не должен требовать рантайм.
>> так и в нативе,
Внезапно ты оказался прав (и такое бывает!) но рантайм все равно нужен. Ты будешь рантайм вместе с вирем дистрибить?
>>Бейсик компилит как в псевдокод, так и в нативе
>> можно тупо дёргать RTLMoveMemory.
Расскажи мне, о мудрый ослолюб, в каком месте MS-DOS я могу найти функцию RTLMoveMemory?
зы: ладно, ты все таки чуть-чуть прав, но я тоже
Though VB programs can be compiled into native code executables from version 5 on (до этого не могли!!!), they still require the presence of around 1 MB of runtime libraries. Core runtime libraries are included by default in Windows 2000 and later (радуйся!!), but extended runtime components still have to be installed (ахахахаха!). Earlier versions of Windows (95/98/NT), require that the runtime libraries be distributed with the executabl (так-то!)
Там не было никаких функций ни для чего.
Справедливости говоря C тоже нужен рантайм VCRT чтобы работал всякий memcpy.
Но его вопервых можно статически линкануть (а в VB можно??) во-вторых если сидеть на чистом win32API (HeapAlloc вместо malloc) но он как-бы и не нужен
Можно.
Пушо скомпилированный нативно и слинкованный статичеси с рантаймом код на VB не хуже кода на сях (хоть и больше) для написания вирей
правда я ХЗ чо там было с управлением памятью. Щетчик сцылок?
Впрочем, вероятно можно было линкануть нормальную либу с memmove чтобы не пикать и не покать
В DDK макрос.
RtlMoveMemory macro
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/nf-wdm-rtlmovememory
>>побайтное копирование с инкрементом "опасного" указателя
из рантаймахахахах
wdm.h:
зы: как реализован memmove я хз, вероятнее всего как ты, борманд, и говоришь: инкремент указателя
Придите к общему соглашению, а я погожу...
Ну про рантайму я там уже выше вику цитнул: с пятерки начали бандлить core в w2k. Но extended все равно не было: только core и только nt-based (в 9x не было)
Ох, какая ересь!.. ;-)
Registration-free COM allows you to use an ActiveX DLL or ActiveX Control in your application without having to register the ActiveX on the end-users machine using regsvr32. It does this by creating a manifest file which if distributed with the executable means that no registration is required. This is only supported in versions of Windows XP and higher and some issues have been reported with XP but there is a hotfix available.
tl;dr: с winxp можно уже не, главное собрать манифест и забандлить его в PE
Важно что технически это было реально. Просто если это появилось в XP, значит привыкли к этому все еще лет через пять после выхода, а в середине нулевых народ уже более интересовался .NET.
А там сборки могли быть в той же самой папке точно, либо в центральном хранилище говна (Global Assembly Cache aka GAC) и пхались туда коммандой regasm
Ну примерно так работают всякие .NET .exeшники, думаю и все утилиты коие умеют делать .exe из python тоже так рабюотают
Что это такое?
Большинство ЯПов умеет итераторы, но обычно они хранят внутри себя некое состояние. Языки содержат сахар для дергания итератора за усико, пока тот не вернет null, false, eof или не кинет exception. Сахар обычно представлен как for, но на самом деле там под капотом дераегается какой-то next().
Это значит что итератор внутри себя содержит состояние.
Бывают еще такие итераторы, которые получают колбек, и пинают колбек пока состояние не кончица (в руби они популярны (там через блоки даже коллекции обходят)). В луа они тоже есть, их называют true(истинные) итераторы.
Но не таковы stateless: они делегируют хранение стейта циклу, сахару снаружи, и в lua это рабоатет.
Таким образом "gen" у нас не имеет состояния и может использоваться для одновременной итерации миллионом форов не создавая лишние объекты, экономя память и не напрягая GC.
А в вашем языке так можно?
Например в Ruby это считается дурным тоном, в питоне не определились, а вот pil отзывается о таких вещах скорее положительно в том месте, где рассуждает о разнице между возвратом ошибки и, собссно, киданием error.
#динамопитухпроблемы