Что хороший путь состоит в том, чтобы записать фронтенду Какао в приложение Erlang?

from pylab import * 
import csv 
import os 
import glob 
import re 
x=[] 
y=[]

f=open("one.txt",'w')

for infile in glob.glob(('*.csv')):
    #   print "" +infile
    csv23=csv2rec(""+infile,'rb',delimiter=',')
    for line in csv23:      
        x.append(line[1])
        #  print len(x)
    for i in range(3000,8000):
        y.append(x[i])
    print ""+infile,"\t",mean(y)
    print >>f,""+infile,"\t\t",mean(y)
    del y[:len(y)]
    del x[:len(x)]
13
задан Bill the Lizard 10 November 2008 в 15:08
поделиться

5 ответов

Один путь состоял бы в том, чтобы иметь ядро Erlang приложения быть демоном, которым фронтенд Какао общается с по доменному Unix сокету с помощью некоторого простого протокола, который Вы разрабатываете.

использование доменного Unix сокета означает, что демон Erlang мог быть запущен по запросу launchd, и фронтенд Какао мог найти, что путь к сокету использовал через переменную среды. Это делает рандеву между приложением и демоном тривиальным, и оно также делает это простым для разработки нескольких фронтендов (или возможно платформа, которая обертывает связь с демоном).

Mac OS X launchd система действительно прохладна этот путь. Если Вы определите, что задание должно быть запущено по запросу через безопасный доменный Unix сокет, [то 112] будет на самом деле создавать сам сокет с соответствующими полномочиями и рекламировать его местоположение через переменную среды, названную в списке свойств задания. Задание при запуске будет на самом деле передано дескриптор файла сокету launchd, когда это сделает простую регистрацию.

В конечном счете это означает, что весь процесс фронтенда, открывающего сокет для общения с демоном, launchd запуск демона и демона, отвечающего на коммуникацию, может быть безопасным, даже если фронтенд и демон, выполненный на различных уровнях полномочий.

10
ответ дан 2 December 2019 в 00:04
поделиться

Одним путем является путь Theo с NSTask, NSPipe и NSFileHandle. Можно запустить путем рассмотрения кода к портам CouchDBX http://couchprojects.googlecode.com/svn/trunk/unofficial-binary-releases/CouchDBX/

, возможны, но не хороши вообще.

там некоторая причина того, почему эта коммуникация не может просто быть обработана с mochiweb и json коммуникацией?

2
ответ дан 2 December 2019 в 00:04
поделиться

Обычно при создавании приложений Какао, которые передние команды UNIX или другие бездисплейные программы Вы используете NSTask :

Используя класс NSTask, Ваша программа может запустить другую программу как подпроцесс и может контролировать это program’s выполнение. Объект NSTask создает отдельный исполняемый объект; это отличается от NSThread, в котором это не совместно использует пространство памяти с процессом, который создает его.

задача А работает в среде, определенной текущими значениями для нескольких объектов: текущий каталог, стандартный вход, стандартный вывод, стандартная погрешность и значения любых переменных среды. По умолчанию объект NSTask наследовал свою среду от процесса, который запускает его. Если существуют какие-либо значения, которые должны отличаться для задачи, например, если текущий каталог должен измениться, необходимо изменить значение перед запуском задачи. task’s среда не может быть изменена, в то время как она работает.

можно общаться с процессом бэкенда посредством stdin / stdout / stderr. Bascially NSTask является высокоуровневой оберткой приблизительно exec (или fork или system, я всегда забываю различие).

Насколько я понимаю Вы не хотите, чтобы программа Erland была второстепенным демоном, который работает непрерывно, но если Вы делаете, пойдите с @Chris предложение.

1
ответ дан 2 December 2019 в 00:04
поделиться

Подходы сокета домена NSTask и Unix являются оба большими предложениями. Что-то для слежения является реализацией Erlang FFI, это находится в работах:

http://muvara.org/crs4/erlang/ffi

1
ответ дан 2 December 2019 в 00:04
поделиться

erl_call должен быть применимым от NSTask. Я использую его от команды Textmate, и это очень быстро. При объединении erl_call с OTP gen_server позволил бы Вам сохранить персистентное состояние бэкенда с относительной простотой. См. мое сообщение на erl_call в моем блоге для получения дополнительной информации.

1
ответ дан 2 December 2019 в 00:04
поделиться