Oberon space
General Category => Общий раздел => Тема начата: Geniepro от Март 05, 2013, 11:17:33 am
-
Прикольный сайт по хацкелю:
School of Haskell Goes Public (https://haskell.fpcomplete.com/blog/2013/03/SoH-Goes-Public)
Там в этой статейке внедрена микро-IDE для хаскеля -- редактор кода с кнопкой его выполнения.
Если там задуматься над использованием той или иной хаскельной функции, то вываливается подсказка по ней.
Забавно, короче...
Решил побаловаться -- создал файл "Hahaha.txt" и начал туда в цикле записывать строку "Hahaha".
main = do
putStrLn "Hahaha"
writeFile "Hahaha.txt" $ cycle "Hahaha"При выполнении выдало сообщение об исключении: "IOException: Hahaha.txt: hClose: resource exhausted (No space left on device)"
Интересно, это куда-то в ОЗУ файл пытался записаться? Виртуальная машина там по программу пользователя создавалась или как?
-
Прикольный сайт по хацкелю:
School of Haskell Goes Public (https://haskell.fpcomplete.com/blog/2013/03/SoH-Goes-Public)
Там в этой статейке внедрена микро-IDE для хаскеля -- редактор кода с кнопкой его выполнения.
Если там задуматься над использованием той или иной хаскельной функции, то вываливается подсказка по ней.
Забавно, короче...
Решил побаловаться -- создал файл "Hahaha.txt" и начал туда в цикле записывать строку "Hahaha".
main = do
putStrLn "Hahaha"
writeFile "Hahaha.txt" $ cycle "Hahaha"При выполнении выдало сообщение об исключении: "IOException: Hahaha.txt: hClose: resource exhausted (No space left on device)"
Интересно, это куда-то в ОЗУ файл пытался записаться? Виртуальная машина там по программу пользователя создавалась или как?
Дык узнал бы - вывел бы информацию о устройстве, там дерево каталогов, сколько свободного места и так далее. Ну и версию ОС там и другие системные параметры.
-
Дык узнал бы - вывел бы информацию о устройстве, там дерево каталогов, сколько свободного места и так далее. Ну и версию ОС там и другие системные параметры.
Там всё это дело в какой-то бубунте работает, я хз как там на хацкеле в линупсе системные параметры считывать ))
-
Дык узнал бы - вывел бы информацию о устройстве, там дерево каталогов, сколько свободного места и так далее. Ну и версию ОС там и другие системные параметры.
Там всё это дело в какой-то бубунте работает, я хз как там на хацкеле в линупсе системные параметры считывать ))
Дык,тебе всего лишь надо уметь работать с файловой системой. Хаскель это ведь умеет?
-
Дык узнал бы - вывел бы информацию о устройстве, там дерево каталогов, сколько свободного места и так далее. Ну и версию ОС там и другие системные параметры.
Там всё это дело в какой-то бубунте работает, я хз как там на хацкеле в линупсе системные параметры считывать ))
Дык,тебе всего лишь надо уметь работать с файловой системой. Хаскель это ведь умеет?
Ну и вообще, есть же модули System.* : http://www.haskell.org/ghc/docs/7.4-latest/html/libraries/haskell98-2.0.0.1/System.html В том числе System.Posix
-
Знатоки командной строки линупса могут побаловаться с таким скриптиком:
module Main where
import System.Process
main :: IO ()
main = do
putStrLn "hs-shell"
let cmd_loop = do
putStr "> "
cmd <- getLine
exit_code <- system cmd
print exit_code
cmd_loop
cmd_loopПытался ввести команды ver, version -- не знает он такого. restart или shutdown не позволяет сделать -- прав рутовских нету )))
-
Знатоки командной строки линупса могут побаловаться с таким скриптиком:
module Main where
import System.Process
main :: IO ()
main = do
putStrLn "hs-shell"
let cmd_loop = do
putStr "> "
cmd <- getLine
exit_code <- system cmd
print exit_code
cmd_loop
cmd_loopПытался ввести команды ver, version -- не знает он такого. restart или shutdown не позволяет сделать -- прав рутовских нету )))
Процессы:
ps -A
PID TTY TIME CMD
1 ? 00:00:00 init
175 ? 00:00:00 isolation-runne
213 ? 00:00:01 ide-backend-ser
236 ? 00:00:00 sh
237 ? 00:00:00 ps
Сеть:
ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3e:88:63:4d
inet addr:10.3.228.207 Bcast:10.3.255.255 Mask:255.255.0.0
inet6 addr: fe80::216:3eff:fe88:634d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:420 errors:0 dropped:0 overruns:0 frame:0
TX packets:272 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:40303 (40.3 KB) TX bytes:27520 (27.5 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Разделы:
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 516040 17368 472460 4% /
/dev/disk/by-label/cloudimg-rootfs 15481840 5809792 8885708 40% /opt/ghc-7.4.2
/dev/disk/by-label/cloudimg-rootfs 15481840 5809792 8885708 40% /opt/ghc-7.4.2-env
/dev/disk/by-label/cloudimg-rootfs 15481840 5809792 8885708 40% /opt/fp/isolation-runner
none 762952 20 762932 1% /run
none 5120 0 5120 0% /run/lock
none 3814740 0 3814740 0% /run/shm
mount
/dev/root on / type overlayfs (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
/dev/disk/by-label/cloudimg-rootfs on /opt/ghc-7.4.2 type ext4 (rw,relatime,user_xattr,acl,barrier=1,data=ordered)
/dev/disk/by-label/cloudimg-rootfs on /opt/ghc-7.4.2-env type ext4 (rw,relatime,user_xattr,acl,barrier=1,data=ordered)
/dev/disk/by-label/cloudimg-rootfs on /opt/fp/isolation-runner type ext4 (rw,relatime,user_xattr,acl,barrier=1,data=ordered)
devpts on /dev/lxc/console type devpts (rw,noexec,nosuid,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/ptmx type devpts (rw,relatime,mode=600,ptmxmode=666)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
Версия системы:
uname -a
Linux container-2f7ba049-ab61-4b8a-b561-a5bba4a0f93d 3.2.0-38-virtual #61-Ubuntu SMP Tue Feb 19 12:37:47 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Время работы системы:
uptime
23:52:30 up 19:11, 0 users, load average: 0.04, 0.03, 0.11
Текущая директория:
> pwd
/home/fpuser/isolation-runner-work/idesession/data.175
Походить по каталогам не выходит, ибо cd, ls и прочее это не отдельные приложения, и соответственно, оно просто ExitSuccess выдает. Таким образом погулять по FS следует средствами самого haskell'я, построить дерево, узнать куда нам пускают а куда нет.
PS. Таки нас запускают под спец-пользователем:
ps -f
UID PID PPID C STIME TTY TIME CMD
fpuser 175 1 0 Mar05 ? 00:00:01 /opt/fp/isolation-runner/isolation-runner
fpuser 213 175 0 Mar05 ? 00:00:02 /opt/fp/isolation-runner/ide-backend-server --ghc-opts-end 8 9 10 11 12 13
fpuser 281 213 0 00:03 ? 00:00:00 /bin/sh -c ps -f
fpuser 282 281 0 00:03 ? 00:00:00 ps -f
-
Походить по каталогам не выходит, ибо cd, ls и прочее это не отдельные приложения, и соответственно, оно просто ExitSuccess выдает. Таким образом погулять по FS следует средствами самого haskell'я, построить дерево, узнать куда нам пускают а куда нет.
Наврал. Все там можно. Просто текущая директория пуста.
Родительская директория содержит два подкаталога:
data.XXX
src.XXX
Где XXX - трехзначное число, видимо номер пользователя. В моем случае, XXX=175.
В src имеем ровно один файл - Main.hs, где, видимо, и содержится исходник исполняемой программы.
Далее, вскрытие показало, что сам сайт (то есть прям таки веб-моррда) у них там крутится на хаскельном же веб-сервере Warp/1.3.7.4 : http://hackage.haskell.org/package/warp-1.3.7.4
$ curl -I https://www.fpcomplete.com
HTTP/1.1 405 Method Not Allowed
Content-Type: text/html; charset=utf-8
Server: Warp/1.3.7.4
Set-Cookie: _SESSION=k7TvOPgWAjZ7JQfAYG2tJmcKyVa2bUHA/9E4hSkprNeviQlQsXphdIa2DLcIcSbXzppkXevt99VH2icSqrPp1gL0sIlKvTRSYmIB+goJVsvEmK1lUOzIERopijoZV+zgwyp4sqQh+pA=; Path=/; Expires=Wed, 13-Mar-2013 09:49:20 GMT; HttpOnly
Vary: Accept, Accept-Language
Connection: keep-alive