Entries for tag "scripts", ordered from most recent. Entry count: 5.
# RegScript - my Scripting Language
Wed
30
Dec 2009
RegScript is my scripting language I've started coding yesterday. I'm not a guru in formal languages theory, but I'm quite fascinated with programming languages, parsers and interpreters. I don't know why but I felt I'd love to write my own programming language so I just started coding it, even if it doesn't make any sense. Maybe that's just because it's like being the creator of something that we, as developers, are usually only users. The language syntax is similar to C++. Here are features I've coded untill now:
-10, 0xFFFF, 0b1010, 1e-6f, false, true, 'A', "foo"
+ - * / % < ?: ! && || ~ & | ^ << >>
= += -= *= /= %= &= |= ^= <<= >>= ++ -- == != < > <= >= ( ) sizeof ,
sin, print
, intrinsic constants: PI
.
The implementation is not optimal yet as I don't generate any bytecode. I just execute statements and evaluate expressions from a tree made of polymorphic nodes dynamically allocated by parser. Sample program:
print("Hello World!\n"); for (auto i = 0; i < 10; i++) print("i = " + i + '\n');
Comments | #scripts #compilers #regscript Share
# Backup Script in PHP
Sun
02
Aug 2009
One of my personal security procedures is daily backup of the code I'm working on to my FTP server. This process requires packing files to an archive and upload the archive to the FTP server. Most annoying part when doing it manually was always selecting aproppriate files, without all these big temporary files and directories like Debug, Release, .ncb, .suo, .user etc.
Today in the morning I've decided to automate this backup task with a script. As I like to use PHP as shell scripting language, here is my backup script in PHP: Backup.php_. It was not a suprise for me to see that PHP already have all the functionality I need, including building ZIP archive and FTP client. Some comments to my code:
To run the script, you must have PHP installed. Then you can just enter something like this into command line:
php Backup.php D:\MyGreatProject
Or you can create BAT file to support backup of your particular project:
@php D:\Backup.php D:\MyGreatProject @pause
After the script have been started, you have to enter "backup name". It is the name of the ZIP file that will be uploaded to FTP. Script recursively searches for files and subdirectories in the given project directory, filters them using functions FilterDir and FilterFile, packs them to a temporary archive file and then uploads the archive to the FTP server. All remaining parameters (temporary archive path, FTP hostname, login, password and remote directory) are hardcoded as constants.
When it comes to the script code, one of the issues was to ask user about the backup name using system console. PHP has an extension called Readline, but unfortunately it doesn't work on Windows. The solution was to use fgets function with STDIN constant:
print("Enter backup name (default: \"$sSuggestedBackupName\"): "); $sBackupName = trim(fgets(STDIN, 1024)); if (!$sBackupName) $sBackupName = $sSuggestedBackupName;
When it comes to building ZIP archive and handling FTP connection, PHP also has extensions for that and they seem to just work in my PHP without any problems. Zip extension exposes class ZipArchive and FTP extension exposes functions ftp_, like ftp_connect or ftp_put. All is documented in the official PHP documentation.
Comments | #scripts #php #tools Share
# Jednak jest nadzieja
Mon
16
Jul 2007
Na forum Warsztatu mi nie odpowiedzieli, ale nie poddałem się i napisałem na forum Blendera. To był dobry pomysł. Niejaki ideasman42 rozwiązał mój problem w najlepszy możliwy sposób - odkrył, że to był mój błąd, w dodatku bardzo elementarny, związany z nieznajomością języka Python (co się dziwić - nauczyłem się go tylko na potrzeby napisania tego eksportera). Jest więc nadzieja na animację szkieletową z Blendera...
Dziś odkryłem (wymyśliłem na spacerze, a potwierdziłem wyprowadzając wzór na kartce), że zamiana macierzy z układu współrzędnych Blendera na DirectX i odwrotnie (gdzie zamiana punktu czy wektora to po prostu zamiana współrzednej Y z Z) polega na zamianie miejscami zarówno trzeciej z czwartą kolumną, jak i trzeciego z czwartym wierszem. To ciekawe, że jeszcze nigdy nigdzie w literaturze czy w Sieci nie spotkałem tego zagadnienia. Każdy tekst skupia się na używaniu jednego układu współrzędnych i żaden nie pokazuje, jak przechodzić między nimi. Jeszcze tylko wymyślę, jak prawidłowo przekształcać między tymi układami kwaternion i kolejny element układanki będzie gotowy :)
Comments | #graphics #scripts #warsztat #rendering Share
# Blender - ale dół
Sat
14
Jul 2007
Dwa tygodnie nauki Blendera, przypominanie sobie Pythona, pisanie eksportera - tyle roboty na marne. Dziś skończyłem pisać wczytywanie statycznych siatek i wszystko zadziałało OK. Że Blender zwraca jakieś dziwne wektory normalne to zniosłem - policzyłem je sobie sam używając NVMeshMender - razem z wektorami Tangent i Binormal, których Blender w ogóle nie ma, bo nie używa Tangent Space, a Normal Mapping obsługuje tylko w Model Space. Zacząłem więc ochoczo pisać eksport szkieletu o oto co się okazało...
Blender zwraca do skryptu jakieś losowe liczby zamiast pozycji kości! Tego sobie już sam nie wyczaruję. Sprawdziłem to wiele razy, wyizolowałem ten bład i przygotowałem skrypt testowy: HorribleBlenderArmatureBug.py. Testowałem na wersji Blender 2.44, ale kiedy znalazłem na Google ten temat forum, zwątpiłem czy użycie wcześniejszej wersji rozwiąże problem. Najwidoczniej ludzie borykali się z tym już w 2005 roku, a jako odpowiedź można przeczytać że "być może komuś jednak udało się poprawnie wyeksportować animację" oraz żeby spróbować innych programów do modelowania.
Chciałbym żeby to był mój błąd, ale niestety nic na to nie wskazuje. Blender zyskuje więc dla mnie nowy, trzeci przydomek - "Niedorobione Oprogramowanie" (kto pamięta drugi? :)
Comments | #rendering #graphics #scripts #engine Share
# W czym pisać skrypty?
Tue
03
Apr 2007
Przychodzi taka chwila, że trzeba napisać mały konsolowy skrypt, który przetworzy jakieś dane z plików tekstowych albo coś wygeneruje. W jakim języku najlepiej go wykonać? Opcji jest wiele:
JScript albo VBScript przez WSH? Bleh... LUA? Jest mała i prosta, ale przeznaczona raczej do osadzania w programach. Pod Windows można sobie też zainstalować dowolny język skryptowy taki jak w Linuksie - np. Python, Perl, PHP, a nawet Bash.
Ja wybrałem PHP. To język który doskonale znam (a to najważniejsze!), który ma bogatą bibliotekę standardową, intuicyjną składnię podobną do C++ i sprawdza się w roli języka skryptowego powłoki równie dobrze jak do pisania stron WWW. Jeśli masz go zainstalowanego, wystarczy że napiszesz skrypt w pliku PHP i obok niego stworzysz taki plik BAT:
@php Skrypt.php @pause