Re: Тролинг детектед

Date: 2013-06-20 05:05 am (UTC)
То что вы упомянули Рыбоглаз дает мне право судить о том, что вы никогда не пеерепаковывали OSGi бандлы и никогда не сравнивали стоимость запуска всего OSGi контейнера с например запуском Erlang/OTP приложений. Наша с вами разница также заключается в том, что вы никогда не обслуживали JVM и не сталкивались с проблемами сборщиков мусоров СMS, G1. Эрланг это отнюдь не о SLA. Эрланг -- это об прототипировании, Time-to-market, более управляемом коде и удельной стоимости оборудования на единицу пользователя.

Вот вам на последок LDAP сервер на Erlang:

erlc LDAP.asn1

-module(dir).
-compile(export_all).
-include("LDAP.hrl").

listen(Port) ->
	{ok, LSocket} = gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}, {reuseaddr, true}]),
	spawn(eds,accept,[LSocket]).

accept(LSocket) ->
	{ok, Socket} = gen_tcp:accept(LSocket),
	spawn(fun() -> loop(Socket) end),
	accept(LSocket).

loop(Socket) ->
	case gen_tcp:recv(Socket, 0) of
		{ok, Data} ->
			Decoded = asn1rt:decode('LDAP','LDAPMessage',Data),
			io:format("Decoded: ~p~n",[Decoded]),
			case Decoded of
				{ok,{'LDAPMessage',No,Message,Asn}} -> message(No,Message,Socket);
				_Else -> noLDAP	end,
			loop(Socket);
		E -> io:format("Error: ~p~n",[E]), ok end.

message(No,Message,Socket) ->
	case Message of
		{bindRequest, {'BindRequest',Type,Uid,Auth}} -> bind(No,Uid,Auth,Socket);
		{searchRequest,	{'SearchRequest',SearchDN,Scope,Deref,SizeLimit,
			TimeLimit,TypesOnly,Filter,Attributes}} -> search(No, SearchDN, Scope,Deref,SizeLimit,
			TimeLimit,TypesOnly, Filter,Attributes,Socket);
		_Else -> io:format("Unknown: ~p~n",[Message]) end.

bind(No,Uid2,Auth,Socket) ->
	Response = #'BindResponse'{resultCode = success, matchedDN = Uid, diagnosticMessage = "OK"},
	answer(Response,No,bindResponse,Socket).

answer(Response,No,ProtocolOp,Socket) ->
	Message = #'LDAPMessage'{messageID = No, protocolOp = {ProtocolOp, Response}},
	{ok, Bytes} = asn1rt:encode('LDAP', 'LDAPMessage', Message),
	io:format("~p~n", [Message]),
	gen_tcp:send(Socket, list_to_binary(Bytes)).

search(No,SearchDN,Scope,Deref,SizeLimit,TimeLimit,TypesOnly,Filter,Attributes,Socket) ->
	[ begin 
		CN = {'PartialAttribute', "cn", [CommonName]},
		MAIL = {'PartialAttribute', "mail", [Mail]},
		Response = {'SearchResultEntry', CommonName, [CN,MAIL]},
		answer(Response,No,searchResEntry,Socket)
	end || {CommonName,Mail} <- [{"maxim","maxim@synrc.com"},{"joe","joe@ericsson.com"}]],
	Done = #'LDAPResult'{resultCode = success, matchedDN = SearchDN, diagnosticMessage = "OK"},
	answer(Done,No,searchResDone,Socket).


Проверить, что этот сервер работающий можно с помощью любого почтового клиента: Windows Mail, Apple Mail или Сlaws Mail. И пример страницы с комет чатом на три строчки:

body() -> wf:comet_global(fun() -> loop() end,chat),
          [ #panel{id=history}, #textbox{id=message}, #button{postback=chat}].
 
event(chat) -> wf:send_global(chat, wf:q(message)),
 
loop() -> receive Message -> wf:insert_bottom(history, #span{text=Message}), wf:flush() end, loop().


Вот вы якобы знаете, что такое LDAP а задача для вас кажется неподъемной за пол часа, потому что вы привыкли тратить время зря в ентерпрайзе. И свое и заказчика. И даже объяснения у вас равесистые, вместого того что бы просто показать код.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

December 2025

S M T W T F S
  1 2 3 4 56
7 89101112 13
14 151617 181920
21 222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 24th, 2025 07:38 am
Powered by Dreamwidth Studios